1

ROS で使用するために libCVD を構築しようとしています (www.ros.org から)。私の問題は、次のエラーが発生することです。

make[3]: Entering directory `/opt/ros/groovy/stacks/tum_ardrone/thirdparty/libcvd/build'
/usr/bin/g++-4.6 -o progs/cvd_display_image progs/cvd_display_image.o -L. -lcvd  -ltiff -ljpeg -lpng -lpng -llapack -lGLU -lGL -lrt  -L -lX11 -lXext -pthread

./libcvd.so: undefined reference to `XMoveWindow'
./libcvd.so: undefined reference to `XCreateGlyphCursor'
./libcvd.so: undefined reference to `XStoreName'
./libcvd.so: undefined reference to `XLookupString'
./libcvd.so: undefined reference to `XFreeFont'
./libcvd.so: undefined reference to `XSetClassHint'
./libcvd.so: undefined reference to `XCreateWindow'
./libcvd.so: undefined reference to `XCreateColormap'
./libcvd.so: undefined reference to `XOpenDisplay'
./libcvd.so: undefined reference to `XDestroyWindow'
./libcvd.so: undefined reference to `XCloseDisplay'
./libcvd.so: undefined reference to `XUnmapWindow'
./libcvd.so: undefined reference to `XNextEvent'
./libcvd.so: undefined reference to `XSetWMProtocols'
./libcvd.so: undefined reference to `XResizeWindow'
./libcvd.so: undefined reference to `XMapWindow'
./libcvd.so: undefined reference to `XSelectInput'
./libcvd.so: undefined reference to `XFlush'
./libcvd.so: undefined reference to `XWarpPointer'
./libcvd.so: undefined reference to `XLoadQueryFont'
./libcvd.so: undefined reference to `XDefineCursor'
./libcvd.so: undefined reference to `XInternAtom'
./libcvd.so: undefined reference to `XQueryPointer'
./libcvd.so: undefined reference to `XUndefineCursor'
./libcvd.so: undefined reference to `XGetWindowAttributes'
./libcvd.so: undefined reference to `XPending'
collect2: ld returned 1 exit status
make[3]: *** [progs/cvd_display_image] Error 1
make[3]: Leaving directory `/opt/ros/groovy/stacks/tum_ardrone/thirdparty/libcvd/build'
make[2]: *** [libcvd_built] Error 2

ほぼ同様のエラー ( l​​ibcvd のコンパイル中の未定義の参照エラー) に関する別のスタックオーバーフローの質問があります。

2番目の -L オプションでパスが指定されていない理由を見つけるために、そこに提案されているように試しました。そのため、エラーが発生したと思われるプロジェクトのconfigure.inファイルに行き着きました。しかし、私はこのビルド システムの経験がないので、助けていただければ幸いです。

configure.in ファイルは、https://dl.dropboxusercontent.com/u/16804463/configure.inで入手できます。

前もって感謝します。

4

2 に答える 2

2

同様のエラーがありました。libcvd は以下の 3 つのライブラリに依存しているようです。

  • ラパック
  • ブラス
  • トゥーン

これらはすべて数学ライブラリです。Ubuntu ソフトウェア センターから Synaptic Package Manager をインストールします。(ubuntuを使用していると仮定します-そうでない場合は、apt-getまたはパッケージをインストールする他の方法を使用できます)

Synaptic Package Manager から、次のパッケージを検索します。

  • liblapack-dev
  • libblas-dev

インストールします。

TooN をインストールします。 git clone git clone git://github.com/edrosten/TooN.git これにより、クローンした場所に TooN ディレクトリが作成されます。TooN ディレクトリに移動し、次のように入力します。

。/構成、設定

作る

インストールする

お役に立てれば。

于 2014-01-29T13:34:00.237 に答える
2

他のSOの質問で選択された解決策は正しくありません。正しい解決策は、選択されていないものです。エラーは、リンク行にパスがないことです。リンク行には次が含まれます: -L -lX11. の後にパス名が必要-Lです。存在しないため、リンカーはパス名が次の引数であると想定します-lX11libX11.soこれは、ライブラリ参照を代わりにパスとして扱っているため、リンカが実際のライブラリをリンクしないことを意味します。

Makefilecvd_display_image.o ターゲットをリンクするルールを見つけて、ここで何が起こっているかを確認する必要があります。-L$(SOME_VARIABLE)他のSOの回答で述べたように、おそらくリンク行は次のようであり、その変数は空であることがわかります。make SOME_VARIABLE=.おそらく実行などによって、その変数を何らかの値に設定する必要がありますmake SOME_VARIABLE=/usr/lib

ファイルを見るのconfigure.inはあまり役に立ちません。重要な部分はメイクファイルです。

いずれにせよ、このソフトウェアの保守担当者に報告して修正してもらう必要があります。明らかに、複数の人がこのソフトウェアに遭遇しているため、実際のエラーが発生しています。

于 2013-04-18T11:35:50.973 に答える