使用gcc鏈結std的介面出錯

2022-09-18 02:33:31 字數 292 閱讀 4310

連線的時候提示,undefined reference to `std::__1::basic_string 或者undefined reference to `std::__cxx11::basic_string,總之就是std的一部分變數可能可用,但大部分api無法使用

多半是因為沒有使用g++進行連線,gcc和g++關聯的ld是不一樣的。

檢查makefile裡面的ld是否還是cc,如果是需要調整cxx或者cpp(注意路徑是否關聯對應的g++);

提示使用-lstdc++並不好使,還是直接使用g++才能徹底解決問題。

GCC編譯器的 std選項

gcc支援在編譯的時候使用 std選項來選擇編譯語言的標準。程式本身也是在發展的,不斷變化的。以 c 語言為例,發展至今該程式語言已經迭代了諸多個版本,例如 c89 偶爾又稱為 c90 c94 c89 的修訂版 c99 c11。同樣,c 語言也經歷了很多的標準變化,例如c 11,c 14,以及現在最...

gcc庫的鏈結順序導致編譯出錯的問題

當乙個庫為基本庫時,需要將該庫放到引用它的庫的後面進行鏈結,方能得到正確結果。例如在ob中 ldadd top builddir src mergeserver libmergeserver.a top builddir src common libcommon.a top builddir src...

gcc不鏈結未使用函式

在乙個原始檔中,裡面有很多函式,但是main函式沒有全部呼叫,未使用的函式也會被編譯,也會被 打包 到最後的可執行檔案中,要去除掉不要的函式,方法如下 1.執行gcc function sections 其中 function sections的意思是,將不同函式編譯到不同的section上面。如果...