이것은 나의/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
.