c - 埃尔卡皮坦 : Undefined symbol "start" whenever I compile a C program

标签 c macos gcc clang

我最近安装了 OS X El Capitan,安装后我的 C 链接器出现了问题。每当我尝试编译任何程序时,它都会说

Undefined symbols for architecture x86_64:
  "start", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status

无论我使用从 Xcode 开发工具安装的 Clang、从 Homebrew 安装的 Clang 还是从 Homebrew 安装的 GCC,都会发生这种情况。在我安装 El Capitan 后,它才开始发生。

最佳答案

我也遇到过类似的问题。 将 macpro 升级到 OS X El Capitan 后,我无法使用从 Macport 安装的 GNU gcc 来编译我的程序。它显示相同的错误消息。然而 clang 在我的例子中工作得很好。

我在网上搜索了一下,发现了这个: Undefined symbol "start" while linking D program through LD 它说在 gcc 选项中添加 -lcrt1.o 。 我尝试了一下,确实解决了这个问题,所以你可以试试这个。

但我发现了更完整的修复(如下),所以请也尝试一下这个。

就我而言,问题是我有两个版本的 ld:/usr/bin/ld 和/opt/local/bin/ld。不知何故,clang 可以在 ld 的两个版本上正常工作,但 GNU gcc 只能在/usr/bin/ld 上正常工作。

所以我更改了 PATH 变量来告诉 GNU gcc 使用/usr/bin/ld,然后问题就解决了。

关于c - 埃尔卡皮坦 : Undefined symbol "start" whenever I compile a C program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33577214/

相关文章:

重访 C 指针

php - Mautic 安装失败

c++11 - 未解析的 std::__cxx11::basic_string::~basic_string 和 std::allocator<char>::~allocator() 符号

c - GCC 有包含但没有库

c++ - gcc 6.1 std::result_of 编译错误

c++ - 找到二叉树中最低的叶子

objective-c - 如何有效地将 C 库包装到 Swift 类中

c - 为 SWIG 简单 Lua 示例创建共享库 DLL 时出错 (Windows 7)

swift - 检查一个 Int 值是否大于或等于另一个 Int?值(value)?

javascript - 覆盖 javascript/jquery 中的 CMD+N 或 CTRL+N 快捷键?