在经历了这么多的麻烦之后,我终于能够安装VXL-1.14.0并编译了opengazer http://www.inference.phy.cam.ac.uk/opengazer/。我遵循了它的自述文件和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库的人能告诉我这里到底是怎么回事吗?谢谢。
发布于 2012-05-10 00:36:41
使用旧版本的gcc似乎可以解决这个问题:
sudo apt-get install g++-4.4然后将Makefile中包含g++的行更改为g++-4.4。
如果之后遇到不明确的异常问题,请参考install notes。
https://stackoverflow.com/questions/10137099
复制相似问题