一、*** No rule to make target '
disp_manager.h', needed by '
disp_manager.o'. Stop.
错误原因:
1、编译依赖错误,
2、引用之前使用过得makefile 当make clean 时 一些依赖并没有全部清除
解决:
使用 make distclean 彻底清除**
二、fatal error: ft2build.h: No such file or directory
描述:已经把编译好的库 头文件都放到交叉编译得目录里还是报错
错误原因:
1、是系统中没有相关的头文件,
2、是在编译过程中,gcc和g++没有找到对应的头文件,并不是系统中不存在文件。
解决方法:
在编译过程中,添加头文件路径
export C_INCLUDE_PATH=/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/../arm-linux-gnueabihf/libc/usr/include/freetype2(对应头文件的位置)
export CPLUS_INCLUDE_PATH=/.../freetype2 (对应头文件的位置)
其他指定方法
#在PATH中找到可执行文件程序的路径。
export PATH =$PATH:$HOME/bin
#gcc找到头文件的路径
C_INCLUDE_PATH=/usr/include/libxml2:/MyLib
export C_INCLUDE_PATH
#g++找到头文件的路径
CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/libxml2:/MyLib
export CPLUS_INCLUDE_PATH
#找到动态链接库的路径
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/MyLib
export LD_LIBRARY_PATH
#找到静态库的路径
LIBRARY_PATH=$LIBRARY_PATH:/MyLib
export LIBRARY_PATH
三、交叉编译万能公式
查看头文件、库文件得系统目录
echo 'main(){}'| arm-linux-gnueabihf-gcc -E -v -
手工交叉编译:
如果交叉编辑工具链的前缀是 arm–linux-gnueabihf-,比如 arm–linux-gnueabihf-gcc,交叉编译开源软件时,如果它里面有 configure,万能命令如下:记得运行前要设置好环境变量
设置环境变量:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
万能编译:
./configure --host=arm--linux-gnueabihf --prefix=$PWD/tmp
make
make install
–host = xxx 根据自己的交叉编译工具链前缀更改
编译安装好后,进入tmp目录 把头文件和库文件考到对应的系统目录
头文件:
cp include/* -rf /home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/../arm-linux-gnueabihf/libc/usr/include
库文件:
cp lib/* -rfd /home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/../arm-linux-gnueabihf/libc/usr/lib/