ld:找不到库

时间:2014-10-17 17:35:09

标签: build linker ld

我正在尝试构建一个依赖于SDL2库的项目。我已经使用自制软件安装并链接了它:

> ls /usr/local/lib | grep SDL2
libSDL2-2.0.0.dylib
libSDL2.a
libSDL2.dylib
libSDL2_test.a
libSDL2main.a

我还在/usr/local/lib/etc/paths添加了~/.bash_profile

> cat /etc/paths
/usr/local/lib
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

但是,当我尝试构建项目时,我仍然会收到此错误:

error: linking with `cc` failed: exit code: 1
note: cc '-m64' '-L' (...) '-lSDL2'
ld: library not found for -lSDL2
clang: error: linker command failed with exit code 1 (use -v to see invocation)

为什么会发生这种情况?如何解决?

2 个答案:

答案 0 :(得分:5)

我通过将/usr/local/lib添加到$LIBRARY_PATH

来解决了这个问题

对于bash,在~/.bash_profile

export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/lib"

对于鱼壳,在~/.config/fish/config.fish

set -g -x LIBRARY_PATH $LIBRARY_PATH /usr/local/lib

答案 1 :(得分:1)

/etc/paths用于可执行文件,而不是共享库。与$PATH中设置的.bash_profile环境变量相同。这些是在终端中键入命令时搜索程序的路径。

您需要做的是更改链接器链接路径。有关如何设置链接路径的详细信息,请参阅this question的答案。