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

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

설치하려고 하는데원시 버퍼Redhat 시스템의 라이브러리(Amazon EC2의 Linux 버전) 아무 문제 없이 실행했는데 configure라이브러리 가 Redhat 에 포함되어 있지 않았기 때문에 해당 디렉토리 를 추가한 다음 실행하여 링크를 업데이트했습니다.makemake install.so/usr/local/lib/usr/local/lib/etc/ld.so.confldconfig

내 문제는 어떤 이유에서든 디렉토리에 있음에도 불구하고 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.so오류가 수정되었지만 링커가 여전히 해당 링크를 찾을 수 없습니다 libprotobuf.

답변1

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

ldGCC(또는 clang 및 아마도 다른 많은 컴파일러) 의 경우 이 -L플래그를 사용하여 이를 수행할 수 있습니다.

관련 정보