從文檔的描述,他們似乎做同樣的事情,除了支持共享的說:「不是所有的系統」和「只有一些系統」支持符號(現在還不清楚,如果這些是同一套系統):-symbolic和-shared GCC標誌有什麼區別?
共享 生成一個共享對象,然後可以將其與其他對象鏈接到 形式的可執行文件。並非所有系統 都支持此選項。對於可預測的 結果,當您指定此 選項時,還必須指定 用於生成代碼(-fpic,-fPIC或型號 子選項)的相同選項集合。
-symbolic 在構建共享對象時綁定對全局符號的引用。警告 關於任何未解決的引用 (除非被鏈接編輯器 選項-Xlinker -z -Xlinker defs覆蓋)。 只有少數系統支持此 選項。
我懷疑不同的是在「生產,然後可以與其它對象以形成可執行的鏈接的共享對象」的一部分,但是這聽起來像的東西,是任何庫的真。這是否意味着生成的共享對象也可以靜態鏈接?
不要像valgrind(也許gprof?)的工具通過插入工作?如果我做了一個符號構建,他們不會工作嗎? – 2009-10-20 15:21:31
Valgrind仍然應該作爲-symbolic來防止共享內部對象,並且不會影響共享內部對象的插入。也就是說,真正重要的是象徵性綁定的符號是Valgrind想要插入的符號。 – 2009-10-20 16:46:18
如果有人再次發生這種情況:這樣做的一個重要結果是,外部變量不再可以跨共享庫邊界工作。 – 2009-10-31 18:53:26