0

Ubuntu を使用しており、IDE は Aptana 3.0 です。

ビルドしようとすると、次のエラーが発生します。ライブラリlibfcgi.aは にあり/usr/local/lib/ます。

プロジェクト プロパティの [Library C++ Linker] セクションで/usr/local/lib/、検索パスとファイルに追加しました/usr/local/lib/libfcgi.a

なぜまだビルドできないのですか?

**** Build of configuration Debug for project rtb ****

make all 
Building target: rtb
Invoking: GCC C++ Linker
g++ -L/usr/local/lib -o"rtb"  ./src/rtb.o   -l/usr/local/lib/libfcgi.a
/usr/bin/ld: cannot find -l/usr/local/lib/libfcgi.a
collect2: ld returned 1 exit status
make: *** [rtb] Error 1
4

5 に答える 5

3

これはあなたが望むものかもしれません。

g++ -L/usr/local/lib -o "rtb" ./src/rtb.o -lfcgi

-l<value> は、lib<value>.a または lib<value>.so という名前のライブラリの -L でリストされたすべてのフォルダーを自動的に検索します。必要なのは「-lfcgi」だけです。

于 2012-01-13T12:42:08.907 に答える
0

やったほうがいい

g++ -o "rtb" ./src/rtb.o -lfcgi

まれに検索パスにない場合/usr/local/lib/は、次のようにコマンドラインにそのパスを追加できます

g++ -L/usr/local/lib -o "rtb" ./src/rtb.o -lfcgi

LIBRARY_PATHまたは、コンパイルコマンドを呼び出す前に環境変数に入れます。たとえば、bash を使用します。

if [ -z "$LIBRARY_PATH" ];
  then export LIBRARY_PATH=/usr/local/lib;
  else export LIBRARY_PATH="$LIBRARY_PATH":/usr/local/lib;
fi

明示的なファイル名を付けることを主張する場合は、次を省略し-lます。

g++ -L/usr/local/lib -o "rtb"  ./src/rtb.o   /usr/local/lib/libfcgi.a

ただし、柔軟性がないため、お勧めしません。問題が別の互換性のないバージョンのライブラリがインストールされていることである場合は、正しいバージョンが検索パスの最初に来るようにすることをお勧めします (または、間違ったバージョンが検索パスにまったく含まれていないことを確認することをお勧めします)。 - システムから削除することによっても可能です)。

于 2012-01-13T13:12:52.657 に答える
0

それはすべての助けです....本当に感謝しています。

これが解決策です。-lfcgi++ を使用する必要があり、追加しました

g++ -L/usr/local/include/ -lfcgi++ -o"rtb" ./src/rtb.o

上記は aptanta コンソールからの出力です。-lfcgi を試しましたが、うまくいきませんでした。Google 検索で -lfcgi++ を使用するようになりました。

于 2012-01-14T04:38:53.307 に答える
0

代わりに「-lfcgi」を試してください

g++ -L/usr/local/lib -o"rtb"  ./src/rtb.o   -lfcgi
于 2012-01-13T12:42:00.383 に答える
0

リンカ フラグが間違っています-lfcgi。「lib」プレフィックスと .a サフィックスが付いたパス全体ではなく、そうである必要があります。

手で、または Apatana で変更できます。そのために、lib への完全修飾パスを 2 回与える必要はありません。(あなたはすでに彼に検索パスを与えました、覚えていますか?)。通常、次のように追加のライブラリを定義 cfgiします: IDE が残りの処理を行い、それをリンカー フラグに追加します。

于 2012-01-13T12:43:22.293 に答える