无法在 macOS 上使用 GSL 库 - ld:找不到体系结构的符号 x86_64
Cannot use GSL library on macOS - ld: symbol(s) not found for architecture x86_64
我已按照提供的说明安装 GSL-1.16 库,我想我已经成功安装了该库。但是,当我尝试编译 & 运行 在网站 (http://www.gnu.org/software/gsl/manual/html_node/An-Example-Program.html#An-Example-Program) 中找到的示例程序时,我收到以下消息:
$ gcc besel_exam.c
Undefined symbols for architecture x86_64:
"_gsl_sf_bessel_J0", referenced from:
_main in besel_exam-72d841.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
操作系统是macOS X Yosemite gcc --version 的输出如下:
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.0.0
Thread model: posix
的确,正如@trojanfoe 和@bergercookie 所说,您必须编译您的文件,然后link 将其存入库。如 compile and link 中所述,对于该特定示例:
首先编译文件:
gcc -Wall -I/usr/local/include -c example.c -o example.o
第二,link它到图书馆:
gcc -L/usr/local/lib example.o -lgsl -o example.e
当然,/usr/local/lib 应该替换为安装 gsl 的路径。
编辑:在 macOS 中,从 Yosemite 安装的默认位置是 /opt/local/lib
(和 /opt/local/include
)
我已按照提供的说明安装 GSL-1.16 库,我想我已经成功安装了该库。但是,当我尝试编译 & 运行 在网站 (http://www.gnu.org/software/gsl/manual/html_node/An-Example-Program.html#An-Example-Program) 中找到的示例程序时,我收到以下消息:
$ gcc besel_exam.c
Undefined symbols for architecture x86_64:
"_gsl_sf_bessel_J0", referenced from:
_main in besel_exam-72d841.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
操作系统是macOS X Yosemite gcc --version 的输出如下:
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.0.0
Thread model: posix
的确,正如@trojanfoe 和@bergercookie 所说,您必须编译您的文件,然后link 将其存入库。如 compile and link 中所述,对于该特定示例:
首先编译文件:
gcc -Wall -I/usr/local/include -c example.c -o example.o
第二,link它到图书馆:
gcc -L/usr/local/lib example.o -lgsl -o example.e
当然,/usr/local/lib 应该替换为安装 gsl 的路径。
编辑:在 macOS 中,从 Yosemite 安装的默认位置是 /opt/local/lib
(和 /opt/local/include
)