mac os 编译 c++ 的时候 clang: error: linker command failed with exit code 1

2015-05-09 16:06:02 +08:00
 ivanchou
老师给的 makefile 在 ubuntu 下正常,命令是:
g++ -std=c++0x -g -O2 -Idir FileName.cc -fPIC -shared -o FileName.so

但在 mac os 下编译出错(10.10.3)
错误信息:
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

有说是 command line tool 的问题,我修改为:
clang++ -stdlib=libstdc++ -g -O2 -Idir FileName.cc -fPIC -shared -o FileName.so
同样的错误

有遇到过的吗?
5404 次点击
所在节点    问与答
21 条回复
jiang42
2015-05-09 18:01:59 +08:00
我觉得你提供的有用信息太少了。。
cheneiweei
2015-05-09 18:11:14 +08:00
这个错误一般是库链接错误
ooxxcc
2015-05-09 18:33:16 +08:00
求解决问题又自作聪明截取错误信息或者转述错误信息都是耍流氓
ivanchou
2015-05-09 20:39:54 +08:00
@jiang42

@cheneiweei
但是在 ubuntu 下使用 g正常,所以我怀疑是 clang 的问题。
@ooxxcc
正因为不懂所以来求助有错吗?我以为像你这种自以为是又自大的家伙才是在耍流氓。
ivanchou
2015-05-09 20:41:10 +08:00
@jiang42
其他的信息就是跟代码相关,

Undefined symbols for architecture x86_64:
"InputFormatter::getEdgeLine()", referenced from:
PageRankVertexInputFormatter::loadGraph() in PageRankVertex-ed140b.o

类似这样,所以我认为这些是无关的
ivanchou
2015-05-09 20:42:01 +08:00
@cheneiweei
但是在 ubuntu 下使用 g++ 就正常,所以我怀疑是 clang 的问题。 你说的库链接指的是什么?
ivanchou
2015-05-09 20:43:23 +08:00
@ooxxcc 如果你的回答对别人没用,那么就不要自以为是的站在制高点对别人进行评断了。
你看评论编辑栏的右下 “请尽量让自己的回复能够对别人有帮助” 谢谢
msg7086
2015-05-09 21:07:37 +08:00
《提问的智慧》。
你并没有说清楚事情的背景…
另外,你有试过linux下的clang吗?
skydiver
2015-05-09 21:23:28 +08:00
@ivanchou 你要是早就把5楼的错误信息贴出来,问题早就解决了。这个明显是你少连接了个文件。你找到InputFormatter::getEdgeLine所在的目标文件一起链接就好了。

求解决问题又自作聪明截取错误信息或者转述错误信息都是耍流氓
ivanchou
2015-05-09 22:03:00 +08:00
@skydiver
错 “求解决问题又自作聪明截取错误信息或者转述错误信息都是耍流氓” 这句话也得在你解决了问题之后再说
skydiver
2015-05-09 22:21:05 +08:00
@ivanchou 说的就是解决不了问题是因为你的提问信息不全,要是能解决问题了反而说明你没错了
plan9
2015-05-09 23:09:20 +08:00
修改以后出现同样的错误有可能你没有 clean
jiang42
2015-05-10 00:08:30 +08:00
@ivanchou 问问题一般是要给出全部信息的,最好是在其他人机器上能够复现。

还有。。。别甩锅给clang,之前我见过有人甩锅给clang,被打脸了。。。


@msg7086 补充一下,有用过Mac OS X上的gcc么?
twl007
2015-05-10 00:21:14 +08:00
请问我电脑死机了是为什么
ivanchou
2015-05-10 01:54:50 +08:00
@jiang42 感谢提醒,确实对 c++ 不熟,用 java 较多。
其实我的过程是这样的,按照老师给的步骤下来,ubuntu 上能够成功编译,但 mac os 上就出现这个问题,所以控制变量也知道是 clang 的问题,我在前面也说明了。按理这个错误是比较常见的,所以就有了这么一个提问,然后楼底下就一群一副让人讨厌的嘴脸乱喷。另外 gcc 有 mac os 的么?因为 make file 里的 gcc 在执行过程中被自动转成了 clang 。结果是搞半天没解决, stackoverflow 也把类似的错误翻了个遍,最后放弃直接用 ubuntu 了,做一次作业不至于浪费太多时间在环境上。
canautumn
2015-05-10 08:39:50 +08:00
一看明显是楼主对C++不熟,楼上的没必要喷啊。既然回帖了就耐心点呗。

@ivanchou mac有gcc的,但是需要自己装,用homebrew什么的就可以。不过你的问题是缺少一个库,跟clang无关,一般都是配置的问题,而想让别人帮你解决配置问题,你给的信息确实是远远不够。不过你做得对,没必要因为一个作业折腾太久,Ubuntu能用就用。Mac下边的配置什么的用久了自然就熟了。如果以后打算经常在Mac下搞,就花些时间折腾一下,否则用Ubuntu解决,没必要花太多时间。我估计楼上主要想喷你『我估计是clang的问题』这句话。
ooxxcc
2015-05-10 11:40:44 +08:00
@ivanchou 所以说,你自己问题不说清楚还让别人猜,乖乖把完整错误信息贴出来不就行了,一定要截一段

早贴五楼早解决,不贴五楼还要别人帮你解决不是耍流氓是什么
ooxxcc
2015-05-10 11:50:17 +08:00
“一副让人讨厌的嘴脸”,你就说我说你自作聪明截取错误信息这点说错了没,至于语气上的问题,一定要我亲切友好的想你请求全部log你才满意对吧

本来有点兴趣点回来的,结果发现别人就提供了“我的电脑不能用了怎么办”这种的信息,你觉得应该是什么感觉

别把不懂当借口,贴出完整的错误提示是常识


建议看一下《提问的智慧》
ivanchou
2015-05-10 11:53:33 +08:00
@ooxxcc 我不知道你们这些人在装什么,我信息提供的不全你跟我心平气和的说我有不足我改正就是,在那装什么装,你的冷嘲热讽对我对大家都毫无帮助。你要是不想帮忙左上角返回谢谢,我是来求帮助的不错,但我不是跪求,你为什么不学学那些点击进来却没人回复的人?让我学学《提问的智慧》,自己先向 @jiang42 @canautumn 多学学《说话的艺术》吧。就酱。
------------------------
结帖,请不要再回复污染大家的时间线了。
ooxxcc
2015-05-10 11:56:06 +08:00
@ivanchou 你要觉得冷嘲热讽随便你了,呵呵

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/189745

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX