El Capitan:每当我编译C程序时,未定义的符号“start”

时间:2015-11-06 23:33:47

标签: 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后才开始发生。

1 个答案:

答案 0 :(得分:1)

我遇到过类似的问题。 在我将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,然后修复了问题。