ldconfig가 libprotobuf.so를 찾을 수 없습니다.

ldconfig가 libprotobuf.so를 찾을 수 없습니다.

설치하려고 하는데프로토부프Redhat 시스템(Amazon EC2의 Linux 빌드)의 라이브러리입니다. configure, make, 및 을 make install문제 없이 실행했는데 .so라이브러리가 에 복사되었습니다 /usr/local/lib. Redhat은 /usr/local/lib에 디렉토리를 포함하지 않기 때문에 /etc/ld.so.conf이를 추가한 다음 ldconfig연결을 업데이트하기 위해 실행했습니다.

내 문제는 어떤 이유로 든 디렉토리 에 있음에도 불구하고 을 ldconfig선택하지 않는다는 것입니다 .libprotobuf.so/usr/local/lib

출력은 다음과 같습니다 ls -l /usr/local/lib.

total 61336
-rw-r--r-- 1 root root 17654940 Mar 26 02:39 libprotobuf.a
-rwxr-xr-x 1 root root      994 Mar 26 02:39 libprotobuf.la
-rw-r--r-- 1 root root  1948106 Mar 26 02:39 libprotobuf-lite.a
-rwxr-xr-x 1 root root     1029 Mar 26 02:39 libprotobuf-lite.la
lrwxrwxrwx 1 root root       25 Mar 26 02:39 libprotobuf-lite.so -> libprotobuf-lite.so.7.0.0
lrwxrwxrwx 1 root root       25 Mar 26 02:39 libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0
-rwxr-xr-x 1 root root   893083 Mar 26 02:39 libprotobuf-lite.so.7.0.0
lrwxrwxrwx 1 root root       20 Mar 26 02:39 libprotobuf.so -> libprotobuf.so.7.0.0
lrwxrwxrwx 1 root root       20 Mar 26 02:39 libprotobuf.so.7 -> libprotobuf.so.7.0.0
-rwxr-xr-x 1 root root  7326093 Mar 26 02:39 libprotobuf.so.7.0.0
-rw-r--r-- 1 root root 25883264 Mar 26 02:39 libprotoc.a
-rwxr-xr-x 1 root root     1010 Mar 26 02:39 libprotoc.la
lrwxrwxrwx 1 root root       18 Mar 26 02:39 libprotoc.so -> libprotoc.so.7.0.0
lrwxrwxrwx 1 root root       18 Mar 26 02:39 libprotoc.so.7 -> libprotoc.so.7.0.0
-rwxr-xr-x 1 root root  9071740 Mar 26 02:39 libprotoc.so.7.0.0
drwxr-xr-x 2 root root     4096 Mar 26 02:39 pkgconfig

출력은 다음과 같습니다 ldconfig -v | grep protobuf.

libprotobuf.so.7 -> libprotobuf.so.7.0.0
libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0

libprotobuf링커로부터 인식을 받으려면 어떻게 해야 합니까 ?

편집하다: 라이브러리를 직접 연결하려고 하면 다음 오류가 발생합니다.

ldconfig: Ignored file /usr/local/lib/libprotobuf.so since it is not a regular file.

더 이상 심볼릭 링크가 아니도록 복사해 오류를 수정했지만 링커 libprotobuf.so.7.0.0가 여전히 .libprotobuf.solibprotobuf

답변1

ld.so.conf런타임 동적 링커에서만 사용됩니다. ld우리는 전혀 그렇지 않습니다. /usr/local/lib링커 검색 디렉터리로 전달해야 합니다( ld직접 호출하는 경우 직접 전달하거나 컴파일러를 통해).

ld, GCC(또는 clang 및 아마도 몇몇 다른 컴파일러) 의 경우 -L플래그를 사용하여 이를 수행합니다.

관련 정보