分类: LINUX
2018-03-19 19:43:07
如果在编译时指定了--sysroot就是为编译时指定了逻辑目录。编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前面加上逻辑目录变成/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include。
例如
export SDKTARGETSYSROOT=/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi
export CC="arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT"
则如果在编译过程中需要找#include,因为我们指定了系统目录,
则会到下面的路径去找
/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include
实际例子:有份代码,原来的配置环境里是
export SDKTARGETSYSROOT=/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi
export CC="arm-poky-linux-gnueabi-gcc -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=$SDKTARGETSYSROOT"
export LD="arm-poky-linux-gnueabi-ld --sysroot=$SDKTARGETSYSROOT"
我当时指定export PATH="/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/:$PATH"
当用arm-poky-linux-gnueabi-gcc -lpthread check_system_type.c -o systemtype命令编译时
出现如下错误
check_system_type.c:1:18: fatal error: stdio.h: No such file or directory
compilation terminated.
make: *** [all] 错误 1
可以看出原环境是有--sysroot 参数,所以如果修改为如下即可顺利编译通过
SYSROOT =/opt/fsl-imx-fb/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi
arm-poky-linux-gnueabi-gcc -lpthread -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 check_system_type.c -o systemtype --sysroot=$(SYSROOT)
===========================================
当然,如果我们同时指定了--prefix=/home/shell.albert/libqt5.3.2希望生成的库和头文件等都安装到此目录下,执行make install开始复制操作。
但是当我们去系统的/home/shell.albert/libqt5.3.2中去寻找编译成果时却没有这些文件,
而直接的成果输出在了,输出路径是相对于-sysroot的。