我正在开发一个大型项目,该项目在运行时使用 ACE_DLL::open 加载动态库。
由于未解析的符号,库已定位并尝试打开但在 mmap 上失败(下面是 strace )。我确定这是因为未解析的符号,并且通过运行 nm 我可以获得所有未解析符号的列表。问题是在编译时有大量未解析的符号应该在运行时解决,所以 nm 不是很有帮助,因为我需要一个一个地遍历所有符号。
有没有一种聪明的方法来找出导致.so被加载的确切原因
open("libxxxxxxx_d.so", O_RDONLY) = 29
read(29, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300w\3\0004\0\0\0"..., 512) = 512
fstat64(29, {st_mode=S_IFREG|0755, st_size=10130306, ...}) = 0
mmap2(NULL, 373832, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 29, 0) = 0xffffffffed5f5000
mmap2(0xed64e000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 29, 0x59) = 0xffffffffed64e000
close(29) = 0
munmap(0xed5f5000, 373832) = 0
munmap(0xed5cc000, 167764) = 0