
실행파일을 입력하면 ldd
경고창이 뜹니다 not found
.
libCmp.so => not found
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6ed7000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6e6c000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6e48000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6d63000)
하지만 이 so
파일은 .에 있습니다 /usr/lib
. 입력하면 file libCmp.so
출력에 정보가 없음을 알 수 있습니다.buildID
libCmp.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
산출file libgcc_s.so.1
libgcc_s.so.1: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x6b7de7cba96b907b2961892b76c176b1ddbf4bee, stripped
이것이 문제입니까? 이 정보를 파일에 추가하는 방법은 무엇입니까?
ldconfig -v |grep libCmp
들어가려고 하는데/usr/lib
/sbin/ldconfig: Path `/lib/arm-linux-gnueabihf' given more than once
/sbin/ldconfig: Path `/usr/lib/arm-linux-gnueabihf' given more than once
/sbin/ldconfig: /lib/arm-linux-gnueabihf/ld-2.13.so is the dynamic linker, ignoring
libCmp.so -> libCmp.so
하지만 아무것도 변하지 않았어
답변1
동적 링커 런타임 바인딩을 다시 빌드합니다(루트로).
ldconfig -v | grep libCmp
a) 라이브러리를 출력해야 합니다(발견되었음을 의미) b) 나중에 라이브러리를 찾을 수 있도록 필요한 심볼릭 링크를 올바르게 설치해야 합니다.
빌드 ID가 누락되어도 문제가 되지 않습니다.
답변2
최근에 libCmp를 추가한 경우.
루트로서 다음을 시도해 볼 수 있습니다.
ldconfig -v
ldconfig는 명령줄에 지정된 디렉토리, 파일 /etc/ld.so.conf 및 신뢰할 수 있는 디렉토리(/lib 및 /usr/lib)에 있는 최신 공유 라이브러리에 대한 필요한 링크와 캐시를 생성합니다. 캐시는 런타임 링커 ld.so 또는 ld-linux.so에서 사용됩니다.
-v는 ldconfig가 캐시에 링크된 모든 파일을 나열하도록 합니다. 그런 다음 출력을 보고 libCmp가 있는지 확인할 수 있습니다.