설치하려고 하는데원시 버퍼Redhat 시스템의 라이브러리(Amazon EC2의 Linux 버전) 아무 문제 없이 실행했는데 configure
라이브러리 가 Redhat 에 포함되어 있지 않았기 때문에 해당 디렉토리 를 추가한 다음 실행하여 링크를 업데이트했습니다.make
make install
.so
/usr/local/lib
/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
플래그를 사용하여 이를 수행할 수 있습니다.