问题分析
问题分析
进入到users/ubus-2014-09-17目录下发现Makefile文件为空,由此可以断定是Makefile生成有问题,查看users/Makefile关于ubus的目录下Makefile生成,找到如下代码
feq ($(CONFIG_LIB_UBUS),y)
@echo "build ubus"
@if [ ! -e ./ubus-2014-09-17/Makefile ]; then \
cd ./ubus-2014-09-17; \
sed 's/OPTION(BUILD_LUA \"build Lua plugin\" ON)/OPTION(BUILD_LUA \"build Lua plugin\" OFF)/g' -i CMakeLists.txt; \
sed 's/OPTION(ENABLE_SYSTEMD \"systemd support\" ON)/OPTION(ENABLE_SYSTEMD \"systemd support\" OFF)/g' -i CMakeLists.txt; \
sed '16a'"INCLUDE_DIRECTORIES($(DIR_ROOT)/users/lib/include)" -i CMakeLists.txt; \
sed '16a'"INCLUDE_DIRECTORIES($(DIR_ROOT)/users/lib/include/json-c)" -i CMakeLists.txt; \
sed '16a'"LINK_DIRECTORIES($(DIR_ROOT)/users/lib/lib)" -i CMakeLists.txt; \
sed '16a'"ADD_DEFINITIONS(-DJSONC)" -i CMakeLists.txt; \
PKG_CONFIG_PATH="$(DIR_ROOT)/users/lib/lib/pkgconfig" cmake -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} -fstack-protector -fPIE" -DCMAKE_LD_FLAGS="${CMAKE_LD_FLAGS} -pie -Wl,-z,relro -Wl,-z,now" -DCMAKE_INSTALL_PREFIX="$(DIR_ROOT)/users/lib/" -DCMAKE_FIND_ROOT_PATH="$(DIR_ROOT)/users/lib" .; \
echo "" >> Makefile; \
echo "romfs:" >> Makefile; \
echo " cp -a ubus $(DIR_ROMFS)/usr/bin" >> Makefile; \
echo " cp -a ubusd $(DIR_ROMFS)/usr/bin" >> Makefile; \
echo " cp -a examples/client $(DIR_ROMFS)/usr/bin" >> Makefile; \
echo " cp -a examples/server $(DIR_ROMFS)/usr/bin" >> Makefile; \
echo " cp -a *.so $(DIR_ROMFS)/usr/lib" >> Makefile; \
echo " cp -a ../libubox-2014-08-04/*.so $(DIR_ROMFS)/usr/lib" >> Makefile; \
make; \
make install; \
cd -; \
fi
endif
可以看到其中有使用cmake指令,查看系统发现未安装cmake
问题解决
使用如下指令安装cmake
sudo apt-get install cmake
安装之后,重新make,依然报错,最后分析发现,在ubus-2014-09-17目录下存在Makefile的情况下不会重新生成,所以手动删除Makefile,再次编译问题解决