我正在尝试使用自制软件来下载和构建像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> …