3 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
采用
g++ test.cpp
相反,因?yàn)檫@是c ++代碼。
或者,如果您確實(shí)要使用gcc,請(qǐng)?zhí)砑?lstdc++到命令行,如下所示:
gcc test.cpp -lstdc++
在每種情況下md5針對(duì)a.out產(chǎn)生的結(jié)果運(yùn)行都會(huì)顯示出相同的輸出。
但是,是的,g++可能會(huì)使您的世界變得更簡(jiǎn)單。

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
該.cpp擴(kuò)展名導(dǎo)致gcc將您的文件編譯為C ++文件。(請(qǐng)參閱GCC文檔。)
嘗試編譯相同的文件,但將其重命名為具有.c擴(kuò)展名:
mv test.cpp
gcc test.c
另外,您可以通過(guò)傳遞-x c給編譯器來(lái)明確指定語(yǔ)言:
gcc -x c -c test.cpp -o test.o
如果您nm test.o在這些C語(yǔ)言版本上運(yùn)行,您會(huì)注意到它___gxx_personality_v0沒有以符號(hào)形式列出。
(并且,如果您對(duì)用生成的目標(biāo)文件運(yùn)行相同的命令,則會(huì)gcc -c test.cpp -o test.o顯示___gxx_personality_v0符號(hào)。)

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
遇到相同的問題,但解決方案不同:
靜態(tài)庫(kù)中的C ++代碼被鏈接起來(lái),并由.m文件引用。將.m文件重命名為.mm可以解決此問題。
- 3 回答
- 0 關(guān)注
- 1078 瀏覽
添加回答
舉報(bào)