"gsl/gsl_rng.h' file not found" OSX El Capitan 升级后
"gsl/gsl_rng.h' file not found" after OSX El Capitan upgrade
我刚刚更新到最新的 OSX,El Capitan,但我在编译 C 程序时遇到了问题。它在升级 OS 之前编译得很好。之后,我已经收到一条针对我的 LaTeX 文本编辑器 Latexian 的警告消息:
但由于我不在程序内部使用预览或编译,而是在终端中使用 "latex file.tex" 进行编译,所以工作正常。
现在我的问题出在我的 .c 程序上,它包含一个 GSL 库,这是我的 header:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <gsl/gsl_rng.h>
#include <gsl/gsl_randist.h>
编译时我得到以下信息:
performance.c:4:10: fatal error: 'gsl/gsl_rng.h' file not found
#include <gsl/gsl_rng.h>
^
1 error generated.
我猜 OSX 由于这两种情况而发生了一些变化,但后者对我来说是个大问题,因为我正在完成我的论文!希望我的问题很清楚,这是我的第一个问题。
编辑:
我猜这就是问题所在
El Capitan's System Integrity Protection will shift utilities' functions
使用 GCC 编译时,您可能必须手动指定包含 gsl
子文件夹的父目录。同样,您还必须指定要在其中查找库的目录。可以使用 -I
选项将包含目录添加为 gcc 的搜索路径,并使用 -L
添加库搜索路径。在您的情况下,这是通过将其添加到您的 GCC 编译中来完成的:
-I/usr/local/include -L/usr/local/lib
在我的例子中,这一行解决了这个链接错误
gcc $(gsl-config --cflags) name_of_file.c $(gsl-config --libs) -o name_of_file
见Wiki
在我的例子中,我只需要做 install/update gsl
brew install gsl
我刚刚更新到最新的 OSX,El Capitan,但我在编译 C 程序时遇到了问题。它在升级 OS 之前编译得很好。之后,我已经收到一条针对我的 LaTeX 文本编辑器 Latexian 的警告消息:
但由于我不在程序内部使用预览或编译,而是在终端中使用 "latex file.tex" 进行编译,所以工作正常。
现在我的问题出在我的 .c 程序上,它包含一个 GSL 库,这是我的 header:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <gsl/gsl_rng.h>
#include <gsl/gsl_randist.h>
编译时我得到以下信息:
performance.c:4:10: fatal error: 'gsl/gsl_rng.h' file not found
#include <gsl/gsl_rng.h>
^
1 error generated.
我猜 OSX 由于这两种情况而发生了一些变化,但后者对我来说是个大问题,因为我正在完成我的论文!希望我的问题很清楚,这是我的第一个问题。
编辑:
我猜这就是问题所在
El Capitan's System Integrity Protection will shift utilities' functions
使用 GCC 编译时,您可能必须手动指定包含 gsl
子文件夹的父目录。同样,您还必须指定要在其中查找库的目录。可以使用 -I
选项将包含目录添加为 gcc 的搜索路径,并使用 -L
添加库搜索路径。在您的情况下,这是通过将其添加到您的 GCC 编译中来完成的:
-I/usr/local/include -L/usr/local/lib
在我的例子中,这一行解决了这个链接错误
gcc $(gsl-config --cflags) name_of_file.c $(gsl-config --libs) -o name_of_file
见Wiki
在我的例子中,我只需要做 install/update gsl
brew install gsl