頭文件搜索路徑
搜索順序依次是:
1. 如果是雙引號引用的頭文件則會先搜索當前目錄,否則跳過此步驟;
2. 搜索-I指定的目錄;
2. 搜索gcc的環境變量CPLUS_INCLUDE_PATH(C程序使用的是C_INCLUDE_PATH);
3. 依次搜索gcc的內定目錄:
/usr/include
/usr/local/include
/usr/lib/gcc/x86_64-redhat-Linux/${gcc_version}/include
${gcc_version}的獲取命令是:echo gcc -v 2>&1 | awk '/^gcc version/ { print $3 }'
動態庫搜索路徑
搜索順序依次是:
1. ELF可執行文件中動態段中DT_RPATH所指定的路徑。即在編譯目標代碼時, 對gcc加入鏈接參數“-Wl,-rpath”指定動態庫搜索路徑
2. 環境變量LD_LIBRARY_PATH 指定的路徑
3. /etc/ld.so.cache中所緩存的動態庫路徑,這個可以通過先修改配置文件/etc/ld.so.conf中指定的動態庫搜索路徑,然後執行ldconfig命令來改變。
4. /lib
5. /usr/lib