使用非Xcode IDE开发C++

3

我想在mac os上开发C++程序,已经安装了带有许多框架的Xcode。

然而,我想不使用Xcode IDE编写代码,而是自己编写makefile并直接使用gcc(与Xcode一起提供)进行编译/链接。

以一个opengl程序为例。我尝试使用以下命令进行编译:

gcc -I/usr/include/ -I/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/GLUT.framework/Headers/ -I/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/OpenGL.framework/Headers -L/usr/lib -L/usr/X11/lib/ -L/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/OpenGL.framework/Libraries/ -lGL -lGLU -lGLUTt main.cpp

或者

gcc -I/usr/include/ -L/usr/lib -framework OpenGL -framework GLUT -lm main.cpp

但它们最终出现了链接错误。

未定义的符号: "std::basic_ostream operator<<(long)", 在 ccKBRSF9.o 中引用自 reshape(int, int) display() 中引用自 ccKBRSF9.o "___gxx_personality_v0",在 ccKBRSF9.o 中引用自 ___gxx_personality_v0$non_lazy_ptr(也许你的意思是 ___gxx_personality_v0$non_lazy_ptr) "std::ios_base::Init::~Init()", 在 ccKBRSF9.o 中引用自 ___tcf_0 "std::basic_string, std::allocator> const& std::operator[](unsigned long) const",在 ccKBRSF9.o 中引用自 std::__verify_grouping(char const*, unsigned long, std::basic_string, std::allocator> const&) "std::basic_ostream> & std::operator<<(std::basic_ostream> &, char const*)", 在 ccKBRSF9.o 中引用自 keyboard(unsigned char, int, int) keyboard(unsigned char, int, int) in ccKBRSF9.o reshape(int, int)in ccKBRSF9.o display() in ccKBRSF9.o "std::ios_base::Init::Init()", 在 ccKBRSF9.o 中引用自 __static_initialization_and_destruction_0(int, int) "std::basic_string, std::allocator>>::size() const",在 ccKBRSF9.o 中引用自 std::__verify_grouping(char const*, unsigned long, std::basic_string, std::allocator> const&) "std::cout",在 ccKBRSF9.o 中引用自 __ZSt4cout$non_lazy_ptr(也许你的意思是 __ZSt4cout$non_lazy_ptr) ld: 符号未找到 collect2: ld 返回 1


可能是What is the difference between g++ and gcc?的重复问题。 - underscore_d
2个回答

8

使用g++编译C++代码。它是GCC的C++前端。例如:

g++ -I/usr/include/ -L/usr/lib -framework OpenGL -framework GLUT -lm main.cpp

2
因为gcc是C编译器,它将无法正确链接C++标准库。 - Matthew Flaschen
@elgcom:这在所有平台上都是GCC的相同之处。 - Potatoswatter
5
如果你坚持,那么你仍然可以使用gcc,只需添加“-lstdc++”。 - Paul R

0

你也可以使用clang++,但无论哪种情况下,你都必须使用C++编译器或者-lstdc++选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接