我想在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