Linux

為什麼 nm 沒有顯示 /lib/i386-linux-gnu/libc.so.6 的符號?

  • October 23, 2018

我希望在libc.so.6文件中看到包括printf在內的符號數量。我使用nm工具找到它們,但是它說 libc.so.6 中沒有符號。

它可能已經去掉了它的正常符號,剩下的是它的動態符號,你可以用nm -D.

@PSkocik 回答了這個問題。我只想添加更多細節。ELF 中有兩種符號部分:.symtab.dynsym(有關詳細資訊,請參閱Linux 標準基礎核心規範,又名 LSB_5.0.0)。.symtab用於共享庫本身的連結步驟。連結完成後,.symtab不再需要該部分。該.dynsym部分包含應該由動態連結器在執行時搜尋的重要符號。nm預設情況下僅轉儲該.symtab部分中的符號。

LSB_5.0.0第 10.2.2.1 節,“ELF 節類型”,說符合標準的共享庫應該有一個.symtab或兩個,.dynsym但不能兩者兼有。作為 ABI 庫的一部分,libc 被剝離出來.symtab以符合規範。

引用自:https://unix.stackexchange.com/questions/282616