0

苦労の末、VXL-1.14.0 をインストールし、opengazer http://www.inference.phy.cam.ac.uk/opengazer/をコンパイルすることができました。その README と mirkrules http://www.mirkules.com/opengazer/vxl_install_notes.txtによる非常に役立つメモに従って、opengazer の Makefile と関連ファイル (「PointTracker.h」など) を変更しました。たとえば、私の Makefile では、最初の数行を次のように変更しました (vxl ヘッダーは "/usr/local/include/vxl" にあり、共有ライブラリは "/usr/local/lib" にあり、" libvnl_algo.so" および "libvnl.so"):

VXLDIR = /usr/local
VERSION = opengazer-0.1.2
CPPFLAGS = -Wall -g -O3
LINKER = -L$(VXLDIR)/lib -L/usr/local/lib -lm -ldl -lvnl -lmvl -lvnl_algo -lvgl -lgthread-2.0 

# change the following line if your vxl library is installed elsewhere
INCLUDES = $(foreach prefix,/usr/local/include $(VXLDIR)/include $(VXLDIR)/include/vxl, \
    $(foreach suffix,/core /vcl /contrib/oxl /core/vnl/algo,-I$(prefix)$(suffix)))

===

それでも、コンパイルすると、次のようなエラーが発生します。

LeastSquares.o: In function `LeastSquares::solve()':
/home/mycomp/Downloads/opengazer-0.1.2/LeastSquares.cpp:27: undefined reference to `vnl_cholesky::vnl_cholesky(vnl_matrix<double> const&, vnl_cholesky::Operation)'
/home/mycomp/Downloads/opengazer-0.1.2/LeastSquares.cpp:27: undefined reference to `vnl_cholesky::solve(vnl_vector<double> const&) const'
LeastSquares.o: In function `~vnl_cholesky':
/usr/local/include/vxl/core/vnl/algo/vnl_cholesky.h:45: undefined reference to `vnl_vector<double>::~vnl_vector()'
/usr/local/include/vxl/core/vnl/algo/vnl_cholesky.h:45: undefined reference to `vnl_matrix<double>::~vnl_matrix()'
LeastSquares.o: In function `LeastSquares::solve(double&, double&, double&)':
/home/mycomp/Downloads/opengazer-0.1.2/LeastSquares.cpp:39: undefined reference to `vnl_vector<double>::~vnl_vector()'
LeastSquares.o: In function `~vnl_cholesky':
/usr/local/include/vxl/core/vnl/algo/vnl_cholesky.h:45: undefined reference to `vnl_matrix<double>::~vnl_matrix()'
/usr/local/include/vxl/core/vnl/algo/vnl_cholesky.h:45: undefined reference to `vnl_vector<double>::~vnl_vector()'
/usr/local/include/vxl/core/vnl/algo/vnl_cholesky.h:45: undefined reference to `vnl_matrix<double>::~vnl_matrix()'
/usr/local/include/vxl/core/vnl/algo/vnl_cholesky.h:45: undefined reference to `vnl_matrix<double>::~vnl_matrix()'
collect2: ld returned 1 exit status
make: *** [opengazer] Error 1

VXL、Opengazer、または一般的な C ライブラリのコンパイルに精通している人は、ここで何が起こっているのか教えてもらえますか? ありがとうございました。

4

1 に答える 1

0

の古いバージョンを使用するgccと、問題が解決するようです。

sudo apt-get install g++-4.4

次に、Makefile の行を に変更しg++ますg++-4.4

後であいまいな例外の問題が発生した場合は、インストール ノートを参照してください。

于 2012-05-09T16:36:41.273 に答える