これは私のものです。/etc/ld.so.conf
/usr/local/lib64
/usr/local/lib
include /etc/ld.so.conf.d/*.conf
ディレクトリには次の行のみが/etc/ld.so.conf.d/
含まれますmysql-x86_64.conf
。/usr/lib64/mysql
/usr/lib64/mysql
[ファイルにリストされています]ディレクトリには.conf
次のファイルが含まれています。
total 45,961,216
drwxr-xr-x 2 root root 4,096 Apr 11 17:20 ./
drwxr-xr-x 121 root root 81,920 Mar 30 20:01 ../
-rw-r--r-- 1 root root 28,951,398 Dec 9 21:40 libmysqlclient.a
lrwxrwxrwx 1 root root 20 Dec 9 21:56 libmysqlclient.so -> libmysqlclient.so.21*
lrwxrwxrwx 1 root root 25 Dec 9 21:56 libmysqlclient.so.21 -> libmysqlclient.so.21.1.19*
-rwxr-xr-x 1 root root 16,869,104 Dec 9 21:40 libmysqlclient.so.21.1.19*
-rw-r--r-- 1 root root 44,910 Dec 9 21:36 libmysqlservices.a
実行ldconfig -p | grep mysql
結果:
libmysqlclient.so.21 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.21
libmysqlclient.so (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so
非常に小さなMySQLテストプログラムを接続しようとすると、次のエラーが発生します。
/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: cannot find -lmysqlclient
-L/usr/lib64/mysql
リンカーに追加すると機能します。
私の質問:
これによると回答インターネットで見つかった他の文書では、ldd
ファイルの内容を検討しています/etc/ld.so.conf
。私の場合、なぜ内容は無視されますか?私は何が間違っていましたか?
答え1
ld.so.conf
ld.so
ランタイム動的リンカー構成ファイル。
ld
わざと無視してください。独自のデフォルト値があり、によって決定されます-L
。通常、検索パスはそれを駆動するコンパイラによって決定されます。gcc -print-search-dirs
GCCをご覧ください。
LD_LIBRARY_PATH
にのみ影響しますld.so
。いいえld
。
また、見ることができます静的リンカー、動的リンカー、ローダー、および動的ローダーの実行可能ELFファイルは何ですか?