作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近安装了 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/
我是一名优秀的程序员,十分优秀!