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 回答