0

PTAMを使用するようにlibcvdをコンパイルしようとしています。コンパイル中にコマンド「make」に到達すると、次のエラーが発生します。

ln -s libcvd.so.0.7 libcvd.so.0
ln -s libcvd.so.0 libcvd.so
g++ -o progs/se3_exp progs/se3_exp.o -L.  -lcvd  -ltiff -ljpeg -lpng -llapack -lGLU -lGL -ldc1394  -L -lX11 -lXext -pthread
./libcvd.so: error: undefined reference to 'XQueryPointer'
./libcvd.so: error: undefined reference to 'XPending'
./libcvd.so: error: undefined reference to 'XNextEvent'
./libcvd.so: error: undefined reference to 'XFlush'
./libcvd.so: error: undefined reference to 'XSelectInput'
./libcvd.so: error: undefined reference to 'XStoreName'
./libcvd.so: error: undefined reference to 'XUnmapWindow'
./libcvd.so: error: undefined reference to 'XDestroyWindow'
./libcvd.so: error: undefined reference to 'XCloseDisplay'
./libcvd.so: error: undefined reference to 'XOpenDisplay'
./libcvd.so: error: undefined reference to 'XCreateColormap'
./libcvd.so: error: undefined reference to 'XCreateWindow'
./libcvd.so: error: undefined reference to 'XMapWindow'
./libcvd.so: error: undefined reference to 'XDefineCursor'
./libcvd.so: error: undefined reference to 'XUndefineCursor'
./libcvd.so: error: undefined reference to 'XWarpPointer'
./libcvd.so: error: undefined reference to 'XMoveWindow'
./libcvd.so: error: undefined reference to 'XResizeWindow'
./libcvd.so: error: undefined reference to 'XGetWindowAttributes'
./libcvd.so: error: undefined reference to 'XSetClassHint'
./libcvd.so: error: undefined reference to 'XInternAtom'
./libcvd.so: error: undefined reference to 'XSetWMProtocols'
./libcvd.so: error: undefined reference to 'XLoadQueryFont'
./libcvd.so: error: undefined reference to 'XCreateGlyphCursor'
./libcvd.so: error: undefined reference to 'XFreeFont'
./libcvd.so: error: undefined reference to 'XLookupString'
collect2: ld returned 1 exit status
make: *** [progs/se3_exp] Error 1

このエラーの適切な解決策が見つかりませんでした。

助けてくれてありがとう。

4

3 に答える 3

1

私は解決策を見つけました、

makefileで、ライブラリ参照の順序を次の順序で変更します。

LOADLIBES = -lX11 -ltiff -ljpeg -lpng -llapack -lGLU -lGL -ldc1394  -L -lXext -pthread
于 2013-02-18T15:36:09.010 に答える
1

私は2つのことをしました。

まず、次の場所に-lX11を追加しました。新しい行は次のようになります-

thirdparty/libcvd/installfiles/configure:  LIBS="-lX11 -lX11 $LIBS"
thirdparty/libcvd/installfiles/configure:       LIBS="$LIBS -L$x_libraries -lX11 -lX11 -lXext"
thirdparty/libcvd/installfiles/configure.in:        APPEND(LIBS, [-L$x_libraries -lX11 -lX11 -lXext])

次に、以下の3つすべてをインストールするというこの回答に従いました(注:liblapack-devもインストールする必要があります。liblapack3をインストールしただけですが、devも必要です)。 https://stackoverflow.com/a/21432657/771650

于 2014-03-27T11:21:15.620 に答える
0

あなたの問題はここにあります:

g ++ -o progs / se3_exp progs /se3_exp.o-L。-lcvd [...] -ldc1394 -L -lX11 -lXext -pthread

最初のとは異なり、-L.2番目のライブラリパス(-L)オプションには、その後にパス引数がないため、(ありそうもない!)パスとして使用するために次に来るものをすべて盗みます。この問題を実際に修正するには、MakefileのLOADLIBES定義を調べて、この不完全な-L オプションがどのように問題に組み込まれているかを把握する必要があります。ほとんどの場合、Makefileには... -L$(SOME_PATH)...または同様のものがあり、SOME_PATH変数は予期せず空になっています。

于 2013-02-18T16:34:42.743 に答える