2016-10-05 94 views
0

我想使目錄/usr/local/lib中的庫開始進行g ++鏈接器(ld)搜索。如何將/usr/local/lib永久添加到鏈接器的搜索路徑中?將/ usr/local/lib永久添加到g ++庫搜索路徑中

問題是,我正試圖將庫libboost_program_options.a鏈接到我的源代碼。該庫有兩個副本,一個在/usr/lib/x86_64-linux-gnu/,另一個在/usr/local/lib。如何讓鏈接器首先在/usr/local/lib中查找,然後選擇該鏈接而不是另一個?

ldconfig -v 2>/dev/null | grep -v ^$'\t'我的系統上的輸出:搜索路徑在編譯期間使用的連接器腳本指定

/usr/lib/x86_64-linux-gnu/libfakeroot: 
/lib/i386-linux-gnu: 
/usr/lib/i386-linux-gnu: 
/usr/local/lib: 
/lib/x86_64-linux-gnu: 
/usr/lib/x86_64-linux-gnu: 
/usr/lib/x86_64-linux-gnu/mesa-egl: 
/usr/lib/nvidia-304: 
/usr/lib32/nvidia-304: 
/lib32: 
/usr/lib32: 
/lib: 
/usr/lib: 
/usr/lib/nvidia-304/tls: (hwcap: 0x8000000000000000) 
/usr/lib32/nvidia-304/tls: (hwcap: 0x8000000000000000) 

輸出的ld --verbose | grep SEARCH_DIR | tr -s ' ;' \\012

SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64") 
SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu") 
SEARCH_DIR("=/usr/local/lib64") 
SEARCH_DIR("=/lib/x86_64-linux-gnu") 
SEARCH_DIR("=/lib64") 
SEARCH_DIR("=/usr/lib/x86_64-linux-gnu") 
SEARCH_DIR("=/usr/lib64") 
SEARCH_DIR("=/usr/x86_64-linux-gnu/lib") 
SEARCH_DIR("=/usr/local/lib") 
SEARCH_DIR("=/lib") 
SEARCH_DIR("=/usr/lib") 
+0

http://unix.stackexchange.com/questions/67781/use-shared-libraries-in-usr-local-lib –

+0

@SimonKraemer我想要改變是永久的,並且已經有一個libc.conf文件在/etc/ld.so.conf.d中包含所需的行。我想改變搜索順序。 ld應該從/ usr/local/lib開始尋找 – user3286661

回答

1

。運行gcc -v foo.c以執行鏈接並查看使用哪個鏈接描述文件。在我的情況下,它是/usr/lib/ldscripts/elf_x86_64.x。在該鏈接器腳本中,您會發現SEARCH_DIR指令。將其更新爲包含/usr/local/lib

請注意,ldconfigld.so.conf.d僅在運行時使用。