ltdl이 내 라이브러리를로드하지 못하는 이유를 디버깅하는 데 필요한 통찰력이나 방법을 제공 할 수 있습니까? 부분 strace 출력에서 볼 수 있듯이 라이브러리를 여는 데 성공한 다음 file not found
을보고 한 다음 동일한 방법으로 빌드 된 다른 라이브러리를 성공적으로로드합니다. 어떻게 디버깅 할 수 있습니까? 나는 오랫동안 인터넷 검색을 해왔고 디버깅에 유용한 방법을 찾지 못했습니다. 그것은 동적 라이브러리를로드하는 데 실패 할 때마다libtool이 라이브러리를로드하지 못했습니다.
open("server/modules/smtp.la", O_RDONLY) = -1 ENOENT (No such file or directory)
open("server/modules/smtp.so", O_RDONLY) = 3
getcwd("/home/david/Documents/workspace/dvnmon", 128) = 39
1327209900.751672 3602 Failed to open server/modules/smtp: file not found
open("server/modules/snmp.la", O_RDONLY) = -1 ENOENT (No such file or directory)
open("server/modules/snmp.so", O_RDONLY) = 3
getcwd("/home/david/Documents/workspace/dvnmon", 128) = 39
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/usr/lib64/libnetsnmp.so.15", O_RDONLY) = 3
open("/usr/lib64/libcrypto.so.1.0.0", O_RDONLY) = 3
open("/lib64/libz.so.1", O_RDONLY) = 3
1327209900.800507 3602 Plugin CSNMPMonitor interface version 0.1 loaded
멋진 감사는 내가 필요한 것입니다. 18996 : \t 서버/모듈/smtp.so : 오류 : 기호 찾아보기 오류 : 정의되지 않은 기호 : _ZTI11CSMTPServer (치명적인) Im이 모든 모델을 같은 디렉터리에 심볼릭 링크하기 때문에 .la 파일을 찾을 수 없습니다. .la 파일은 작동하지 않지만 실제 파일을 가리 키거나 해당 디렉토리에 복사하면 smtp 파일을로드하지 못합니다. 누락 된 기호는 유틸리티 .a 파일을 사용하여 프로그램을 분리하고 부모 프로그램이 컴파일 될 때 해당 기호를 분명히 남겨 두는 것과 관련이 있습니다. –