2010-12-17 144 views
2
g++ -o program main.cpp classOne.cpp classTwo.cpp -lgsl -lgslblas -lm 

这就是我安装GSL包时的编译方式。 但现在我正在一台服务器上工作,我无权安装GSL-Library。 我有什么选择?g ++链接问题与GSL

THX

+0

将它安装在您的主目录中并给出正确的链接路径。这也不是一个选择? – DumbCoder 2010-12-17 13:53:54

+0

@DumbCoder是正确的,我的答案是一个详细的过程如何做到这一点,你可以安装很多其他库,你可能需要这样的。 – 2010-12-17 14:00:54

回答

10

我不得不经常为此,执行如下:

  • 在服务器上,在你的home目录来安装库中创建一个目录(假设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脚本3210作为安装前缀(可能取决于你的服务器的其它选项):

./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。

+0

这是我等待的答案! thx为你的时间花花公子!!! – JavaHater 2010-12-17 14:45:49

+0

不客气:-) – 2010-12-17 21:28:21