gcc的默认搜索路径问题总结
2012-12-18 11:04
183 查看
总结下来就一句话:
gcc编译时指定-v参数就能显示详细的信息了。
如:
qj@king:~/test$
qj@king:~/test$ arm-unknown-linux-gnueabi-gcc -o hello hello.c -Wl,-dynamic-linker=/data/app/ld-linux.so.3 -v
Using built-in specs.
Target: arm-unknown-linux-gnueabi
Configured with: /home/qj/crosstool_ng/.build/src/gcc-4.3.2/configure --build=x86_64-build_unknown-linux-gnu --host=x86_64-build_unknown-linux-gnu --target=arm-unknown-linux-gnueabi --prefix=/home/qj/x-tools/arm-unknown-linux-gnueabi --with-sysroot=/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot
--enable-languages=c,c++,fortran,java --with-float=soft --with-pkgversion='crosstool-NG 1.17.0' --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --with-gmp=/home/qj/crosstool_ng/.build/arm-unknown-linux-gnueabi/buildtools
--with-mpfr=/home/qj/crosstool_ng/.build/arm-unknown-linux-gnueabi/buildtools --enable-threads=posix --enable-target-optspace --disable-nls --disable-multilib --with-local-prefix=/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot
--enable-c99 --enable-long-long
Thread model: posix
gcc version 4.3.2 (crosstool-NG 1.17.0)
COLLECT_GCC_OPTIONS='-o' 'hello' '-v' '-mfloat-abi=soft'
/home/qj/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-unknown-linux-gnueabi/4.3.2/cc1 -quiet -v hello.c -quiet -dumpbase hello.c -mfloat-abi=soft -auxbase hello -version -o /tmp/ccNZjE6a.s
ignoring nonexistent directory "/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/include"
#include "..." search starts here:
#include <...> search starts here:
/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/include
/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/include-fixed
/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/include
/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include
End of search list.
GNU C (crosstool-NG 1.17.0) version 4.3.2 (arm-unknown-linux-gnueabi)
compiled by GNU C version 4.6.1, GMP version 4.3.2, MPFR version 2.4.2-p2.
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=127776
Compiler executable checksum: f9533e5b1327a97ebc9d3c6220f86781
COLLECT_GCC_OPTIONS='-o' 'hello' '-v' '-mfloat-abi=soft'
/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/bin/as -mfloat-abi=soft -meabi=4 -o /tmp/ccdGFya4.o /tmp/ccNZjE6a.s
COMPILER_PATH=/home/qj/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-unknown-linux-gnueabi/4.3.2/:/home/qj/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-unknown-linux-gnueabi/4.3.2/:/home/qj/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-unknown-linux-gnueabi/:/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/:/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/:/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/bin/
LIBRARY_PATH=/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/:/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/lib/:/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/lib/:/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/lib/
COLLECT_GCC_OPTIONS='-o' 'hello' '-v' '-mfloat-abi=soft'
/home/qj/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-unknown-linux-gnueabi/4.3.2/collect2 --sysroot=/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot --eh-frame-hdr -dynamic-linker /lib/ld-linux.so.3 -X -m armelf_linux_eabi
-o hello /home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/lib/crt1.o /home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/lib/crti.o /home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/crtbegin.o
-L/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2 -L/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/lib -L/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/lib
-L/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/lib /tmp/ccdGFya4.o -dynamic-linker=/data/app/ld-linux.so.3 -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/crtend.o
/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/lib/crtn.o
----------------------------------------------------------------------------------------------------------------------------------------------------
关于头文件的问题 (2011-05-06 16:49)
分类: 嵌入式Linux
在LINUX程序设计当中,经常会遇到头文件包含的问题,那么这些头文件到底在哪个路径下?具体的头文件路径依赖于程序性质(应用程序还是和内核相关的程序)和编译器,下面分别叙述。
机器环境如下:UBUNTU10.04LTS,自己另外安装的LINUX内核源码目录为/usr/src/kernel,交叉链接器arm-linux-gcc安装目录为/usr/lcoal/arm/2.95.3/
【1.如果是应用程序,并且使用GCC进行普通编译】,如果编译时没有使用-I选项指定包含目录的话,那么默认的头文件目录在/usr/include下,可以在shell下输入如下命令
看到如下输出内容
这就是内定的include文件搜索路径
实际上,这些内定的include文件搜索路径,是存放在specs文件中
【2.如果是应用程序,采用交叉编译】,编译时没有使用-I选项指定包含目录的话,那么默认的头文件搜索路径为/usr/local/arm/2.95.3/arm-linux/include,即交叉编译器的安装目录下的include目录,执行如下命令
看到如下输出内容
这就是内定的include文件搜索路径
即在采用交叉编译时,应用程序所包含的头文件是在交叉编译器的安装目录下。
【3.如果是和内核相关的程序】,比如驱动程序,那么所包含的头文件是在内核源码的安装目录下,即/usr/src/kernel/include,这时一般要在Makefile文件中指定内核源码目录,在编译时指定INCLUDE目录,可参考“http://blogold.chinaunix.net/u3/119151/showart_2342316.html文章中Makefile文件内容
【4.总结】:
nclude的header文件,连结数据库,系统定义,总共有下列来源指定编译器去那找。
当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib() ,写在specs内的
后来用-D -I -L指定的
gcc环境变量设定(编译的时候)
ld.so的环境变量(这是run time的时候)
gcc编译时指定-v参数就能显示详细的信息了。
如:
qj@king:~/test$
qj@king:~/test$ arm-unknown-linux-gnueabi-gcc -o hello hello.c -Wl,-dynamic-linker=/data/app/ld-linux.so.3 -v
Using built-in specs.
Target: arm-unknown-linux-gnueabi
Configured with: /home/qj/crosstool_ng/.build/src/gcc-4.3.2/configure --build=x86_64-build_unknown-linux-gnu --host=x86_64-build_unknown-linux-gnu --target=arm-unknown-linux-gnueabi --prefix=/home/qj/x-tools/arm-unknown-linux-gnueabi --with-sysroot=/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot
--enable-languages=c,c++,fortran,java --with-float=soft --with-pkgversion='crosstool-NG 1.17.0' --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --with-gmp=/home/qj/crosstool_ng/.build/arm-unknown-linux-gnueabi/buildtools
--with-mpfr=/home/qj/crosstool_ng/.build/arm-unknown-linux-gnueabi/buildtools --enable-threads=posix --enable-target-optspace --disable-nls --disable-multilib --with-local-prefix=/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot
--enable-c99 --enable-long-long
Thread model: posix
gcc version 4.3.2 (crosstool-NG 1.17.0)
COLLECT_GCC_OPTIONS='-o' 'hello' '-v' '-mfloat-abi=soft'
/home/qj/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-unknown-linux-gnueabi/4.3.2/cc1 -quiet -v hello.c -quiet -dumpbase hello.c -mfloat-abi=soft -auxbase hello -version -o /tmp/ccNZjE6a.s
ignoring nonexistent directory "/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/include"
#include "..." search starts here:
#include <...> search starts here:
/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/include
/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/include-fixed
/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/include
/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include
End of search list.
GNU C (crosstool-NG 1.17.0) version 4.3.2 (arm-unknown-linux-gnueabi)
compiled by GNU C version 4.6.1, GMP version 4.3.2, MPFR version 2.4.2-p2.
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=127776
Compiler executable checksum: f9533e5b1327a97ebc9d3c6220f86781
COLLECT_GCC_OPTIONS='-o' 'hello' '-v' '-mfloat-abi=soft'
/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/bin/as -mfloat-abi=soft -meabi=4 -o /tmp/ccdGFya4.o /tmp/ccNZjE6a.s
COMPILER_PATH=/home/qj/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-unknown-linux-gnueabi/4.3.2/:/home/qj/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-unknown-linux-gnueabi/4.3.2/:/home/qj/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-unknown-linux-gnueabi/:/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/:/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/:/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/bin/
LIBRARY_PATH=/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/:/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/lib/:/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/lib/:/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/lib/
COLLECT_GCC_OPTIONS='-o' 'hello' '-v' '-mfloat-abi=soft'
/home/qj/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-unknown-linux-gnueabi/4.3.2/collect2 --sysroot=/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot --eh-frame-hdr -dynamic-linker /lib/ld-linux.so.3 -X -m armelf_linux_eabi
-o hello /home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/lib/crt1.o /home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/lib/crti.o /home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/crtbegin.o
-L/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2 -L/home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/lib -L/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/lib
-L/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/lib /tmp/ccdGFya4.o -dynamic-linker=/data/app/ld-linux.so.3 -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /home/qj/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/crtend.o
/home/qj/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/lib/crtn.o
----------------------------------------------------------------------------------------------------------------------------------------------------
关于头文件的问题 (2011-05-06 16:49)
分类: 嵌入式Linux
在LINUX程序设计当中,经常会遇到头文件包含的问题,那么这些头文件到底在哪个路径下?具体的头文件路径依赖于程序性质(应用程序还是和内核相关的程序)和编译器,下面分别叙述。
机器环境如下:UBUNTU10.04LTS,自己另外安装的LINUX内核源码目录为/usr/src/kernel,交叉链接器arm-linux-gcc安装目录为/usr/lcoal/arm/2.95.3/
【1.如果是应用程序,并且使用GCC进行普通编译】,如果编译时没有使用-I选项指定包含目录的话,那么默认的头文件目录在/usr/include下,可以在shell下输入如下命令
echo 'main(){}'|gcc-E -v - |
Using built-in specs. Target: i486-linux-gnu Configured with:../src/configure-v --with-pkgversion='Ubuntu 4.4.3-4ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs--enable-languages=c,c++,fortran,objc,obj-c++--prefix=/usr--enable-shared--enable-multiarch--enable-linker-build-id--with-system-zlib--libexecdir=/usr/lib--without-included-gettext--enable-threads=posix--with-gxx-include-dir=/usr/include/c++/4.4--program-suffix=-4.4--enable-nls--enable-clocale=gnu--enable-libstdcxx-debug--enable-plugin--enable-objc-gc--enable-targets=all--disable-werror--with-arch-32=i486--with-tune=generic--enable-checking=release--build=i486-linux-gnu--host=i486-linux-gnu--target=i486-linux-gnu Thread model: posix gcc version 4.4.3(Ubuntu 4.4.3-4ubuntu5) COLLECT_GCC_OPTIONS='-E''-v' '-mtune=generic''-march=i486' /usr/lib/gcc/i486-linux-gnu/4.4.3/cc1-E -quiet -v - -D_FORTIFY_SOURCE=2-mtune=generic-march=i486-fstack-protector ignoring nonexistent directory "/usr/local/include/i486-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../i486-linux-gnu/include" ignoring nonexistent directory "/usr/include/i486-linux-gnu" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/lib/gcc/i486-linux-gnu/4.4.3/include /usr/lib/gcc/i486-linux-gnu/4.4.3/include-fixed /usr/include End of search list. # 1 "<stdin>" # 1 "<built-in>" # 1 "<command-line>" # 1 "<stdin>" main(){} COMPILER_PATH=/usr/lib/gcc/i486-linux-gnu/4.4.3/:/usr/lib/gcc/i486-linux-gnu/4.4.3/:/usr/lib/gcc/i486-linux-gnu/:/usr/lib/gcc/i486-linux-gnu/4.4.3/:/usr/lib/gcc/i486-linux-gnu/:/usr/lib/gcc/i486-linux-gnu/4.4.3/:/usr/lib/gcc/i486-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/i486-linux-gnu/4.4.3/:/usr/lib/gcc/i486-linux-gnu/4.4.3/:/usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/i486-linux-gnu/4.4.3/../../../:/lib/:/usr/lib/:/usr/lib/i486-linux-gnu/ COLLECT_GCC_OPTIONS='-E''-v' '-mtune=generic''-march=i486' |
#include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/lib/gcc/i486-linux-gnu/4.4.3/include /usr/lib/gcc/i486-linux-gnu/4.4.3/include-fixed /usr/include End of search list. |
【2.如果是应用程序,采用交叉编译】,编译时没有使用-I选项指定包含目录的话,那么默认的头文件搜索路径为/usr/local/arm/2.95.3/arm-linux/include,即交叉编译器的安装目录下的include目录,执行如下命令
echo 'main(){}'|arm-linux-gcc-E -v - |
Reading specs from /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/specs gcc version 2.95.3 20010315(release) /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/cpp0-lang-c -v -D__GNUC__=2-D__GNUC_MINOR__=95-Dunix -D__arm__-Dlinux -D__ELF__-D__unix__ -D__arm__-D__linux__ -D__ELF__-D__unix -D__linux-Asystem(unix)-Asystem(posix)-Acpu(arm)-Amachine(arm)-D__CHAR_UNSIGNED__ -D__ARM_ARCH_3__ -D__APCS_32__ - GNU CPP version 2.95.3 20010315(release) (ARM GNU/Linux with ELF) #include "..." search starts here: #include <...> search starts here: /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/include /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/../../../../arm-linux/sys-include /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/../../../../arm-linux/include End of search list. The following default directories have been omitted from the search path: /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/../../../../include/g++-3 End of omitted list. # 1 "" main(){} |
#include "..." search starts here: #include <...> search starts here: /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/include /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/../../../../arm-linux/sys-include /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3/../../../../arm-linux/include End of search list. |
【3.如果是和内核相关的程序】,比如驱动程序,那么所包含的头文件是在内核源码的安装目录下,即/usr/src/kernel/include,这时一般要在Makefile文件中指定内核源码目录,在编译时指定INCLUDE目录,可参考“http://blogold.chinaunix.net/u3/119151/showart_2342316.html文章中Makefile文件内容
【4.总结】:
nclude的header文件,连结数据库,系统定义,总共有下列来源指定编译器去那找。
当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib() ,写在specs内的
后来用-D -I -L指定的
gcc环境变量设定(编译的时候)
ld.so的环境变量(这是run time的时候)
相关文章推荐
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- gcc默认头文件搜索路径
- linux下 gcc 默认搜索路径
- 转载: Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- linux下gcc默认搜索头文件及库文件的路径
- 转:GCC头文件和库文件搜索路径问题
- 对gcc搜索路径的研究/以及不修改/etc/ld.so.conf使用非默认路径下的库文件--LD_LIBRARY_PATH
- GCC选项——不使用默认系统库函数及不搜索默认头文件路径
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- gcc头文件库文件搜索路径问题
- GCC默认的搜索路径是什么?
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题 1
- 整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- linux下gcc默认搜索头文件及库文件的路径
- linux下gcc默认搜索头文件及库文件的路径
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题 2
- GCC编译默认的头文件搜索路径
- GCC使用技巧之默认搜索路径
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题
- linux下gcc默认搜索头文件及库文件的路径