【问题标题】:ld: library not foundld:找不到库
【发布时间】:2014-12-13 08:33:31
【问题描述】:

我正在尝试构建一个依赖于 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)

为什么会发生,我该如何解决?

【问题讨论】:

    标签: build linker ld


    【解决方案1】:

    我通过将/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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 链接问题的答案建议更改对链接的调用,但我自己不调用它;相反,它由用于编译项目的其他工具自动调用。我可以全局添加库路径吗?
      猜你喜欢
      • 2012-08-19
      • 2014-12-27
      • 2015-11-14
      • 2023-03-27
      • 1970-01-01
      • 2021-10-24
      • 2012-05-17
      • 2017-03-31
      • 1970-01-01
      相关资源
      最近更新 更多