- 55 名前:デフォルトの名無しさん [2008/04/13(日) 11:16:21 ]
- UNIX プログラミングからは外れているかもしれませんが,
一番近そうな質問スレッドなので質問させていただきます. 共有ライブラリの動的リンクについての質問です, CentOS 5.1 でシステム標準の GCC 4.1.1 とは別に,GCC 4.2.3, 4.3.0 を /usr/local 以下にインストールしています. gcc-4.2.3 のライブラリは /usr/local/lib/gcc-4.2.3 に, gcc-4.3.0 のライブラリは /usr/local/lib/gcc-4.3.0 にインストールしています. 以下のように GCC 4.3.0 でライブラリを指定してコンパイルします. gcc43 -Wall -O2 -c -fopenmp omp-test.c -o omp-test.o gcc43 -Wall -O2 -lgomp omp-test.o -o omp-test.parallel 出来上がった実行バイナリ omp-test.parallel を ldd すると, linux-gate.so.1 => (0x00110000) libgomp.so.1 => /usr/local/lib/gcc-4.2.3/libgomp.so.1 (0x00111000) libc.so.6 => /lib/libc.so.6 (0x00565000) librt.so.1 => /lib/librt.so.1 (0x00df3000) libpthread.so.0 => /lib/libpthread.so.0 (0x00702000) /lib/ld-linux.so.2 (0x00546000) と,GCC 4.2.3 のライブラリ依存となってしまいます. 同名のライブラリがある場合, ldconfig で認識されている共有ライブラリで,一番上にあるものが使用されているようです. コンパイル時に GCC のバージョンに合わせてライブラリを指定して, 実行時に GCC のバージョンに合ったライブラリをロードする方法をご存知の方はいませんか? $ ldconfig -p|grep libgomp libgomp.so.1 (libc6) => /usr/local/lib/gcc-4.2.3/libgomp.so.1 libgomp.so.1 (libc6) => /usr/local/lib/gcc-4.3.0/libgomp.so.1 libgomp.so.1 (libc6) => /usr/lib/libgomp.so.1 libgomp.so (libc6) => /usr/local/lib/gcc-4.2.3/libgomp.so libgomp.so (libc6) => /usr/local/lib/gcc-4.3.0/libgomp.so
|

|