2
g++ -o program main.cpp classOne.cpp classTwo.cpp -lgsl -lgslblas -lm

这就是我在安装 GSL 包时编译的方式。但现在我正在使用无权安装 GSL-Library 的服务器。我有哪些选择?

谢谢

4

1 回答 1

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。

于 2010-12-17T13:56:54.867 回答