小编bzc*_*man的帖子

ld:找不到架构x86_64的符号,clang:链接器命令失败

我正在尝试使用自制软件来下载和构建像boost,ceres-solver这样的软件包.会发生什么事情,我会尝试编译代码,没有任何特殊的标志(g++ foo.cpp -o foo -I /usr/local/...我也尝试过clang ++)并且我始终得到这个错误:

Undefined symbols for architecture x86_64:
  ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

所以我环顾四周,解决方案就是使用-stdlib=libstdc++旗帜.我试过了,现在它给了我与苹果发布旧版本的事实相关的错误libstdc++,并没有通过调用-std=c++11或修复-std=c++14.它引发了对像C++ 11语法的反对,比如shared_ptr:

/usr/local/include/ceres/internal/port.h:62:12: error: no member named
      'shared_ptr' in namespace 'std'
using std::shared_ptr;
      ~~~~~^
...
/usr/local/include/ceres/solver.h:629:15: error: expected member name or ';'
      after declaration specifiers
    shared_ptr<ParameterBlockOrdering> inner_iteration_ordering;
    ~~~~~~~~~~^
5 errors generated.
Run Code Online (Sandbox Code Playgroud)

如果我不需要,我宁愿不编辑库源代码,我希望开发人员做得很好吗?

有没有办法建立能够提供正确链接的库(有或没有自制软件)?目前我只是brew install <package> …

c++ macos homebrew c++11 clang++

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×1

c++11 ×1

clang++ ×1

homebrew ×1

macos ×1