이 내 꺼야/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 파일은 무엇입니까?