V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ivanchou
V2EX  ›  问与答

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

  •  
  •   ivanchou · 2015-05-09 16:06:02 +08:00 · 5550 次点击
    这是一个创建于 3511 天前的主题,其中的信息可能已经有所发展或是发生改变。
    老师给的 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
    同样的错误

    有遇到过的吗?
    21 条回复    2016-07-03 22:58:26 +08:00
    jiang42
        1
    jiang42  
       2015-05-09 18:01:59 +08:00
    我觉得你提供的有用信息太少了。。
    cheneiweei
        2
    cheneiweei  
       2015-05-09 18:11:14 +08:00
    这个错误一般是库链接错误
    ooxxcc
        3
    ooxxcc  
       2015-05-09 18:33:16 +08:00
    求解决问题又自作聪明截取错误信息或者转述错误信息都是耍流氓
    ivanchou
        4
    ivanchou  
    OP
       2015-05-09 20:39:54 +08:00
    @jiang42

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

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

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


    @msg7086 补充一下,有用过Mac OS X上的gcc么?
    twl007
        14
    twl007  
       2015-05-10 00:21:14 +08:00 via iPhone
    请问我电脑死机了是为什么
    ivanchou
        15
    ivanchou  
    OP
       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
        16
    canautumn  
       2015-05-10 08:39:50 +08:00   ❤️ 1
    一看明显是楼主对C++不熟,楼上的没必要喷啊。既然回帖了就耐心点呗。

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

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

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

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


    建议看一下《提问的智慧》
    ivanchou
        19
    ivanchou  
    OP
       2015-05-10 11:53:33 +08:00
    @ooxxcc 我不知道你们这些人在装什么,我信息提供的不全你跟我心平气和的说我有不足我改正就是,在那装什么装,你的冷嘲热讽对我对大家都毫无帮助。你要是不想帮忙左上角返回谢谢,我是来求帮助的不错,但我不是跪求,你为什么不学学那些点击进来却没人回复的人?让我学学《提问的智慧》,自己先向 @jiang42 @canautumn 多学学《说话的艺术》吧。就酱。
    ------------------------
    结帖,请不要再回复污染大家的时间线了。
    ooxxcc
        20
    ooxxcc  
       2015-05-10 11:56:06 +08:00
    @ivanchou 你要觉得冷嘲热讽随便你了,呵呵
    qinng
        21
    qinng  
       2016-07-03 22:58:26 +08:00
    试下在编译选项添加-lstdc++,使用标准 c++库可以解决。我也刚碰到这个问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:00 · PVG 22:00 · LAX 06:00 · JFK 09:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.