ld: 找不到符号以供架构x86_64使用
每当我执行时。
g++ some_code.cpp -I/usr/local/include -o executable_binary
我知道 g++
无法找到已编译的动态库(安装在 /usr/local/include
),因为错误还提到了很多特定的符号,这些符号是动态库的一部分。
我已经尝试过:
- 执行
install_name_tool -id "@/usr/local/lib/requiredlib.dylib" /usr/local/lib/requiredlib.dylib
- 将
-L/usr/local/lib
添加到编译选项中。 - 显式添加所有 dylib 路径到编译选项中。
- 尝试添加
DYLD_LIBRARY_PATH
,但由于 Sierra 不允许出于安全原因设置该变量,因此不成功。
我知道可能可以添加 DYLD_LIBRARY_PATH
,但那需要禁用 SIP。我可以这样做,但如果有更干净的方法,我就不想这样做。
P.S.:我正在尝试编译 Tulip 图形库 的教程示例。
缺失的符号与我安装的图形库有关。错误消息如下:
Undefined symbols for architecture x86_64:
"tlp::saveGraph(tlp::Graph*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, tlp::PluginProgress*)", referenced from:
_main in tutorial001-02ee7e.o
"operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, tlp::Graph const*)", referenced from:
_main in tutorial001-02ee7e.o
ld: symbol(s) not found for architecture x86_64
无论何时我执行ls /usr/local/lib/requiredlib.dylib
,都会看到Tulip编译的所有库。
g++ -v
输出:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
执行ls /usr/local/include/tulip/
命令后,我可以获取到我打算使用的库的*.h
文件列表。
/usr/local/include
中。 - pvg