C 交叉編譯神坑Undefined Symbol

2021-08-21 10:26:54 字數 285 閱讀 2213

今天在乙個c++工程裡面引入乙個用c寫的庫的時候編譯都通過了,可是在鏈結的時候出了問題,一直在報undefined symbol。

後來經過同事指點發現,原來c++之所以可以過載函式是因為它編譯的時候生成的函式名會格外加上它的型別和引數等資訊。但是c僅僅生成函式名。所以雖然編譯通過了,但是鏈結的時候,會認為是兩個函式,所以會鏈結失敗。

所以編譯的時候,把全部的c標頭檔案都加上

#ifdef __cplusplus

extern "c"

#endif

然後就能鏈結通過了

C 交叉編譯器

mingw和cygwin都解決了c 跨平台交叉編譯的問題,使linux下的程式在windows上編譯執行成為可能。mingw給習慣在linux上開發的人員在windows上提供了一套類似的工具集 cygwin主要是對於在linux的程式,無需改動 即可移植到windows上 gnuwin32主要是對...

交叉編譯時遇到的乙個坑

由於我們的板子是arm架構,而開發使用的pc機器是x86架構,所以在pc機上開發出來的程式要想在arm板子上執行,需要用交叉編譯工具鏈,類似arm linux gcc這種,編譯成arm平台上可執行的二進位制檔案才可以。如果你除了自己寫的 還引用了一些第三方庫,類似boost這種,你還得把boost庫...

C與C 編譯器Android交叉編譯配置

目錄 目錄 一 gcc與g 編譯器 二 使用linux自帶的gcc或g 編譯原始檔生成的可執行檔案 三 編譯android手機可用的可執行檔案 四 編譯動態庫 五 編譯靜態庫 了解c c 編譯器的基本使用,能夠在後續移植第三方庫進行交叉編譯時,清楚了解應該傳遞什麼引數 gcc與g 是我比較常用的編譯...