ld: 找不到-lgsl库

35

我正在使用OSX工作,尝试运行make文件时出现以下错误:

ld: library not found for -lgsl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [harm] Error 1

之前我发现需要获取gsl库,然后我使用了MacPorts并输入了以下内容:

sudo port install gsl
在我的命令行窗口中输入了它,似乎安装还不错。缺失的lgsl是没有正确配置还是没有随gsl一起提供?我尝试谷歌搜索lgsl但没找到什么有用的信息。我只学了几天编程,不知道是否应该设置路径,甚至不知道如何做到这一点。
感谢您能提供的任何帮助。
3个回答

26

我只是想说,我在OSX上也遇到了同样的问题。不必设置环境变量,可以使用额外的编译器标志-L/opt/local/lib,这样就可以使用-lgsl了。我参考了答案。


这对我不起作用。还有其他人仍然遇到这个问题吗? 编辑:这篇帖子很有帮助:http://stackoverflow.com/questions/28441755/unable-to-link-gsl-library-in-mac-os-x - hlin117
@hlin117,当链接时,你尝试过使用\gsl-config --libs``吗? - zmwang

21

我遇到了同样的问题,这是我如何解决它的:

export LIBRARY_PATH=/usr/local/Cellar/gsl/1.16/lib/

我之前使用以下命令安装了gsl:

brew install gsl

14
在 macOS 上,LIBRARY_PATHLD_LIBRARY_PATH 有什么区别?何时使用它们? - WestCoastProjects
这在哪里有文档记录?你是怎么知道的? - shampoo
1
Chevdor,感谢您的分享,让我的inkscape构建进展了一步。顺便说一下,/usr/local/Cellar是符号链接到/usr/local/opt,我发现在这种情况下使用/usr/local/opt会更加稳定。再次感谢。 - ipatch
1
我的自制Cellar文件夹位于/opt/homebrew下,而不是/usr/local/下。 - balanceglove2
2
@WestCoastProjects LD_LIBRARY_PATH 用于动态链接,而 LIBRARY_PATH 用于静态链接。您的 LD_LIBRARY_PATH 将包含 *.dylib 文件(动态链接库),而您的 LIBRARY_PATH 将包含 *.a 文件(静态库)。通常情况下(但并非总是如此),存储 dylibs 和静态库的路径是相同的。 - tedtanner

6

您需要将macports安装的gsl库的路径添加到LD_LIBRARY_PATH环境变量中(或者很可能添加到构建脚本环境中)。我相信macports将文件存储在/opt/local/lib目录下。


当我输入echo $PATHS时,我得到以下内容:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/usr/texbin这表明/opt/local/lib在我的路径中。我从未听说过LD_LIBRARY_PATH,并且在我输入echo $LD_LIBRARY_PATHS时它没有设置,因此我使用export LD_LIBRARY_PATH="/opt/local/lib"进行设置,但仍然无法解决问题。我还是做错了什么吗? - Novice C
2
小更新:我不知道LD_LIBRARY_PATH是什么,但我已经将LIBRARY_PATH的路径更正为/opt/local/lib,并且一切都运行得很顺利。 - Novice C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接