编译链接的一些总结
gcc 在编译时如何去寻找所需要的头文件:
-I
-> 环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
-> 然后是gcc的默认头文件搜索路径:可使用命令查看: gcc -xc -v -E - </dev/null
链接时找
-L
环境变量LIBRARY_PATH :该环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录
内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的
gcc -print-search-dirs 可使用该命令查询 编译器搜索的库路径
ld --verbose | grep SEARCH 显示 默认搜索库的路径
gcc --print-file-name crtbeginS.o 打印 库位置
程序运行时,搜寻动态库路径:
/etc/ld.so.conf中指定动态库搜索路径
通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":“分隔)
在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。
这是通过gcc 的参数”-Wl,-rpath,“指定。当指定多个动态库搜索路径时,路径之间用冒号”:"分隔)
默认的动态库搜索路径 /lib /usr/lib