簡體   English   中英

-static-libstdc ++ GCC標志是否影響Linux上靜態庫(* .a)的生成

[英]Does -static-libstdc++ GCC flag affect the generation of a static library (*.a) on Linux

問題來自以下情形:

有一個靜態c ++庫A和一個可執行文件B ,它們鏈接到A。 我希望B獨立於c ++運行時。

我知道使用MSVC,如果A使用/MD標志進行編譯,則B絕對取決於msvc * .dll。

但是我對-static-libstdc++對於Linux上的GCC是否起相同作用感到困惑。

我的問題是在Linux上使用GCC,我編譯A時是否需要使用-static-libstdc++ ,否則它只是一個鏈接器標志,根本不影響A。

提前致謝。

我相信答案是肯定的(但尚未嘗試過)。

原因是代碼訪問動態庫中的符號與靜態符號(可執行文件中的符號)的方式不同。 您所用的是庫A。

對於靜態符號,鏈接可執行文件后,這些符號將解析為內存地址。 實際上,符號的名稱根本不必保存在可執行文件中(這稱為“剝離”可執行文件)。

對於動態庫中的符號,必須確實顯示符號名稱,並且可執行文件中的代碼會對其進行訪問以加載符號(可能使用dlopendlsym類的函數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM