gcc 無法編譯 C++?

Mac OS X 平台上程式設計的相關問題討論

版主: bryanchangdigdog謝孟叡

回覆文章
內容
發表人
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

gcc 無法編譯 C++?

#1 文章 ulysses »

我用 Xcode 1.5 的 gcc 在編譯 .cpp 檔案的時候,發生一些狀況無法成功編譯。在 Compile 階段沒有問題,但是在 Link 時就出現 Undefined Symbol。而且都是很基本的型別像 std::cout 之類的。

是不是 gcc 命令要設定什麼旗標,或是加上某些指定 link 的 library 之類?
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

Re: gcc 無法編譯 C++?

#2 文章 ulysses »

ulysses 寫:我用 Xcode 1.5 的 gcc 在編譯 .cpp 檔案的時候,發生一些狀況無法成功編譯。在 Compile 階段沒有問題,但是在 Link 時就出現 Undefined Symbol。而且都是很基本的型別像 std::cout 之類的。

是不是 gcc 命令要設定什麼旗標,或是加上某些指定 link 的 library 之類?
自問自答:
使用 g++ 指令,或是 gcc 在最後 Link 時加上 /usr/lib/gcc/darwin/3.3/libstdc++.a 就可以了

剛剛發現 Xcode 的 gcc 版本還滿新的,abstract class 的 virtual function pointer 在編譯時會自己檢查,公司 Linux 上的版本都不會檢查,就直接讓你 runtime error
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
頭像
janusng
嗜冰客
文章: 1048
註冊時間: 04/30/2001 1:01 am
來自: Metropolis Asylum
聯繫:

#3 文章 janusng »

看來 ulysses 兄的 dev. tools 真的 corrupted 得挺嚴重!

兄台還是重新 install Dev. Tools 吧! 8)
圖檔
It is not god who created man. It is man who created God.

Light travels faster than sound. This is why some people appear bright until you hear them speak.
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

#4 文章 ulysses »

janusng 寫:看來 ulysses 兄的 dev. tools 真的 corrupted 得挺嚴重!
兄台還是重新 install Dev. Tools 吧! 8)
嗚嗚~有那麼嚴重嗎... :(

test.cpp

代碼: 選擇全部

#include <iostream.h>
int main(void) {
    std::cout << "Hello World";
    return 0;
}
拜託各位試試,如果直接用 gcc -o test test.cpp 編譯,會不會出現 Link Error ?
我是要用 g++ 編譯才行。

另外當我用 Xcode 開 C++ Command Line Project,source 裡面會有一個 libstdc++.a
於是我也把他寫到 Makefile 裡面,就可以正常編譯。
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
DJYANG
常吃冰
文章: 257
註冊時間: 03/19/2002 1:01 am
來自: USA/BOSTON

#5 文章 DJYANG »

拜託各位試試,如果直接用 gcc -o test test.cpp 編譯,會不會出現 Link Error ?

我是要用 g++ 編譯才行。
same here
頭像
janusng
嗜冰客
文章: 1048
註冊時間: 04/30/2001 1:01 am
來自: Metropolis Asylum
聯繫:

#6 文章 janusng »

對不起,初看時看錯了以為 ulysses 說 Xcode 不能 compile C++。 :oops:

是的,gcc 雖然會跟 extension,選用 C、C++ 或 Obj-C 的 syntax,但default library path 是不包括 libstdc++.a 的,不要忘了 gcc 是 c compiler,只 link 了libstc.a。在各大平台也是如此的。

g++ 才是 c++ 的 compiler 嘛。 :wink:
圖檔
It is not god who created man. It is man who created God.

Light travels faster than sound. This is why some people appear bright until you hear them speak.
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

#7 文章 ulysses »

janusng 寫:對不起,初看時看錯了以為 ulysses 說 Xcode 不能 compile C++。 :oops:
是的,gcc 雖然會跟 extension,選用 C、C++ 或 Obj-C 的 syntax,但default library path 是不包括 libstdc++.a 的,不要忘了 gcc 是 c compiler,只 link 了libstc.a。在各大平台也是如此的。
g++ 才是 c++ 的 compiler 嘛。 :wink:
謝了。
說起來我也十幾年沒有寫過 C++ 程式了,想當年是在 SPARC SunOS 的機器上編譯,那時候我用的是哪個編譯器忘掉了,不過我記得不是 g++。
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
頭像
janusng
嗜冰客
文章: 1048
註冊時間: 04/30/2001 1:01 am
來自: Metropolis Asylum
聯繫:

#8 文章 janusng »

十多年了?SUN 自己有推出 C++ compiler,會不會是 SUN C++?還是 SPARC C++?
圖檔
It is not god who created man. It is man who created God.

Light travels faster than sound. This is why some people appear bright until you hear them speak.
回覆文章