2016-10-05 7 views
0

ディレクトリ/usr/local/libから始まるライブラリをg ++リンカ(ld)で検索したい。リンカーの検索パスに永久に/usr/local/libを追加するにはどうすればよいですか?g ++ライブラリの検索パスに/ usr/local/libを永久に追加する

問題は、ライブラリlibboost_program_options.aをソースにリンクしようとしていることです。ライブラリのコピーは2つあります.1つは/usr/lib/x86_64-linux-gnu/、もう1つは/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を含むように更新してください。

ldconfigおよびld.so.conf.dは、実行時にのみ使用されます。

関連する問題