【问题标题】:develop C++ without Xcode IDE在没有 Xcode IDE 的情况下开发 C++
【发布时间】:2026-01-05 19:15:02
【问题描述】:

我想在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 const&)in ccKBRSF9.o std::__verify_grouping(char const*, unsigned long, std::basic_string, std::allocator > const&)in ccKBRSF9.o std::__verify_grouping(char const*, unsigned long, std::basic_string, std::allocator > const&)in ccKBRSF9.o "std::basic_ostream >& 标准::运算符&, 字符 const*)”,引用自: ccKBRSF9.o 中的键盘(无符号字符、整数、整数) ccKBRSF9.o 中的键盘(无符号字符、整数、整数) ccKBRSF9.o 中的键盘(无符号字符、整数、整数) 在 ccKBRSF9.o 中重塑(int,int) ccKBRSF9.o 中的 display() "std::ios_base::Init::Init()", 参考自: __static_initialization_and_destruction_0(int, int) in ccKBRSF9.o
“std::basic_string, std::allocator >::size() const", 参考自: std::__verify_grouping(char const*, unsigned long, std::basic_string, std::allocator > const&)in ccKBRSF9.o "std::cout", 引用 从: __ZSt4cout$non_lazy_ptr 在 ccKBRSF9.o (也许您的意思是:__ZSt4cout$non_lazy_ptr) ld:未找到符号 collect2:ld 返回 1 个退出 状态

我错过了什么吗?

【问题讨论】:

标签: c++ xcode opengl operating-system max


【解决方案1】:

您也可以使用clang++,但在这两种情况下,您都必须使用C++ 编译器或-lstdc++ 选项。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 因为gcc是C编译器,在C++标准库中不能正确链接。
    • @elgcom: GCC 在所有平台上都是一样的。
    • 如果你坚持,那么如果你添加-lstdc++,你仍然可以使用gcc。
    最近更新 更多