在 Ubuntu 中很难将数学和 GSL 联系起来

Difficulty linking math and GSL in Ubuntu

我有一个我不久前写的发行版,很高兴安装在 Fedora、Ubuntu 和 OSX 上。我现在正试图让它安装在 Ubuntu 14 LTS 上,但是 运行 遇到了一些困难。

我相信我已经安装了必要的库:

$ sudo apt-get install g++ gsl-bin gsl-ref-html libgsl0-dev

并让 gsl-config 告诉我在我的配置中使用什么:

$ gsl-config --prefix
/usr
$ gsl-config --libs
-L/usr/lib -lgsl -lgslcblas -lm
$ gsl-config --cflags
-I/usr/include

但是当我配置时,它似乎没有找到数学和 GSL 库:

$ ./configure --prefix /usr LDFLAGS='-L/usr/lib -lgsl -lgslcblas -lm' CPPFLAGS=-I/usr/include
...
checking for gsl_eigen_symm in -lgsl... no
checking for gsl_matrix_view_array in -lgslcblas... no
…
checking for floor... no
checking for pow... no
checking for sqrt... no
...

不出所料,make 命令链接失败:

$ 制作

…
g++  -g -O2 -lgsl -lgslcblas -L/usr/lib -lgsl -lgslcblas -lm -o neuron neuron.o dataset.o twoset.o utility.o stats.o vector_ops.o matrix.o model.o iterative.o network.o simpleprop.o bareprop.o backprop.o logistic.o regressnet.o dfa.o ldfa.o qdfa.o  
network.o: In function `Network::reportCondNum(std::ostream&)':
/home/craign/neuron-2.63/src/network.cpp:636: undefined reference to `gsl_matrix_view_array'
… bunch of other undefined reference errors

有什么想法吗?

非常感谢, 克雷格

此命令行:

g++ -g -O2 -lgsl -lgslcblas -L/usr/lib -lgsl -lgslcblas -lm -o neuron neuron.o ...

完全向后。 (阅读 this or this 以了解为什么 link 行中对象和库的顺序很重要。)

你可能想要:

./configure --prefix /usr LIBS='-lgsl -lgslcblas -lm' ...