g ++与GSL的链接问题

Jav*_*ter 2 c++ g++ hyperlink gsl

g++ -o program main.cpp classOne.cpp classTwo.cpp -lgsl -lgslblas -lm
Run Code Online (Sandbox Code Playgroud)

这是我安装GSL包时的编译方式.但现在我正在服务器上,我无权安装GSL-Library.我有什么选择?

谢谢

Ant*_*lli 10

我必须经常这样做,做如下:

  • 在服务器上,在主目录中创建一个目录来安装库(比方说mypref)和另一个目录来构建库(比方说tmp).你有两个新目录:~/mypref~/tmp.
  • 下载GSL源代码~/tmp(最新版本为ftp://ftp.gnu.org/gnu/gsl/gsl-1.14.tar.gz),解压缩并进入生成的子目录(gsl-1.14):

cd ~/tmp
wget ftp://ftp.gnu.org/gnu/gsl/gsl-1.14.tar.gz
tar -xvzf gsl-1.14.tar.gz
cd gsl-1.14

  • 启动configure脚本指定~/mypref为安装前缀(可能还有其他选项,具体取决于您的服务器):

./configure --prefix=${HOME}/mypref

  • 制作:

make

  • 并安装:

make install

  • 现在您可以安全地删除~/tmp目录:

cd; rm -rf tmp

现在您可以使用以下命令编译程序:

g++ -o program main.cpp classOne.cpp classTwo.cpp -I${HOME}/mypref/include -lm -L${HOME}/mypref/lib -lgsl -lgslcblas

-I-L分别指示标题和库的路径.如果您的程序要在您的主目录不可见的上下文中执行,请考虑静态链接:

g++ -o program main.cpp classOne.cpp classTwo.cpp ${HOME}/mypref/lib/libgsl.a ${HOME}/mypref/lib/libgslcblas.a -I${HOME}/mypref/include -lm

最后一个命令生成的二进制文件比以前更大,但完全独立于GSL和GSLCBLAS.