
설치하려고 하는데프로토부프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.so
libprotobuf
답변1
ld.so.conf
런타임 동적 링커에서만 사용됩니다. ld
우리는 전혀 그렇지 않습니다. /usr/local/lib
링커 검색 디렉터리로 전달해야 합니다( ld
직접 호출하는 경우 직접 전달하거나 컴파일러를 통해).
ld
, GCC(또는 clang 및 아마도 몇몇 다른 컴파일러) 의 경우 -L
플래그를 사용하여 이를 수행합니다.