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

これが、GSLパッケージがインストールされているときにコンパイルする方法です。しかし今、私はGSL-Libraryをインストールする権限を持っていないサーバーで作業しています。私のオプションは何ですか?

どうも

4

1 に答える 1

10

私はこれを定期的に行わなければなりませんでした、次のようにしてください:

  • サーバー上で、ホームディレクトリにライブラリをインストールするためのディレクトリ(たとえばmypref)と、ライブラリを構築するためのディレクトリ(たとえば)を作成しますtmp。2つの新しいディレクトリがあります:~/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 に答える