makefile错误、找不到头文件、交叉编译

一、*** No rule to make target 'disp_manager.h', needed by 'disp_manager.o'. Stop.

makefile错误、找不到头文件、交叉编译

错误原因:
1、编译依赖错误,
2、引用之前使用过得makefile 当make clean 时 一些依赖并没有全部清除
解决:
使用 make distclean 彻底清除
**

二、fatal error: ft2build.h: No such file or directory

makefile错误、找不到头文件、交叉编译
描述:已经把编译好的库 头文件都放到交叉编译得目录里还是报错

错误原因
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/
上一篇:如何进行交叉编译?


下一篇:linux常见错误