0

リモート サーバーで次のプロジェクトをコンパイルしようとしています。

プロジェクトを 'scode' というフォルダーに git clone しました。

プロジェクトには、glib2 および gsl ライブラリが必要です。リモートサーバーでコンパイルしようとしているので、sudo 権限がありません。そのため、ツールを使用して glib2 と gsl をインストールすることはできません。

その結果、「scode/gsl」および「scode/glib」フォルダーの下に gsl と gslib2 の両方を手動でコンパイルしました。

Makefile を変更し、これらのディレクトリへの絶対パスを -I オプションとして追加する必要がありました。

それにもかかわらず、最終的な実行可能ファイルをコンパイルしようとすると. 次のエラーが表示されます。

[dyuret@psglogin scode]$ make

gcc -O3 -D_GNU_SOURCE -Wall -std=c99 -I. -I /home-2/dyuret/scode/gsl -I pkg-config --cflags glib-2.0/home-2/dyuret/scode/glib/scode.o svec.o pkg-config --libs glib-2.0-lm -lgsl -lgslcblas -o scode

//home-2/dyuret/scode/glib/glib/libglib-2.0.la: ファイルが認識されません: ファイル形式が認識されません

collect2: エラー: ld が 1 の終了ステータスを返しました make: * [scode] エラー 1

私はその問題を少し調べました。このリンクは有益に見えますが、コンパイラ、libtools、およびコンパイル フロー全般についてあまり経験がないため、著者が言っていることを完全に解読することはできません。

どんな助けでも大歓迎です。私はすでにこの問題に時間を費やしてきましたが、あまり進展がありませんでした。

4

2 に答える 2

0

私のグループの誰かが私の問題を助けてくれました。彼が大まかに実行した手順は次のとおりです。

(1) glib と追加のライブラリを $HOME ディレクトリ ($HOME/lib、$HOME/include) に手動でインストールします。

(1.1) 彼は './configure prefix=$HOME', 'make', 'make install' でこれを行ったと思います。

(2) 最初に概説した問題の原因となっていた `pkg_config` の使用法を取り除きました。彼の新しい CLFAGS および LIBS 変数は次のとおりです。

CFLAGS=-O3 -D_GNU_SOURCE -Wall -std=c99 -I. -I$$HOME/include -I$$HOME/include/glib-2.0 -I$$HOME/lib/glib-2.0/include
LIBS=-lglib-2.0 -lm -lgsl -lgslcblas -L$$HOME/lib -L/usr/local/cuda/lib64 -lcudart

この後、コードは追加の問題なしでコンパイルされました。

于 2013-08-28T10:59:03.393 に答える