私は、実行時に ACE_DLL::open を使用して動的ライブラリをロードする巨大なプロジェクトに取り組んでいます。
ライブラリが見つかり、開こうとしましたが、未解決のシンボルが原因で mmap (以下は strace ) で失敗しました。未解決のシンボルが原因であることは確かであり、 nm を実行することで、すべての未解決のシンボルのリストを取得できました。問題は、コンパイル時に未解決のシンボルが大量にあり、実行時に解決する必要があることです。そのため、すべてのシンボルを 1 つずつ確認する必要があるため、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