ld: library not found

别来无恙 提交于 2019-12-30 06:38:37

问题


I'm trying to build a project that depends on SDL2 library. I've installed and linked it using homebrew:

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

I also added /usr/local/lib to my /etc/paths and ~/.bash_profile as well:

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

However, when I try to build the project, I still get this error:

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)

Why does it happen and how can I fix it?


回答1:


I fixed the issue by adding /usr/local/lib to my $LIBRARY_PATH:

For bash, in ~/.bash_profile:

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

And for fish shell, in ~/.config/fish/config.fish:

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



回答2:


/etc/paths is for executable files, not shared libraries. Same with the $PATH environmental variable set in .bash_profile. These are the paths searched for programs when you type a command in the terminal.

What you need to do is change the linkers link path. See the answer to this question for details on how to set up the link path.



来源:https://stackoverflow.com/questions/26430432/ld-library-not-found

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!