ld는 ld.so.conf를 무시합니다.

ld는 ld.so.conf를 무시합니다.

이것은 나의/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.confld.so런타임 동적 링커 인 의 구성 파일입니다 .

ld일부러 무시합니다. 로 보완된 자체 기본값이 있습니다 -L. 일반적으로 검색 경로는 이를 구동하는 컴파일러에 의해 결정됩니다. gcc -print-search-dirsGCC를 참조하세요.

LD_LIBRARY_PATH또한 영향을 미칩니다 ld.so.~ 아니다ld.

또한보십시오정적 링커, 동적 링커, 로더 및 동적 로더에 대한 실행 가능한 ELF 파일은 각각 무엇입니까?

관련 정보