MATLAB 2017a编译gpb代码

MATLAB 2017a编译gpb代码

实验环境

fedora 24

matlab 2017a

gpb源码地址

gpb源码

编译过程

编译过程-1

cd grouping/source
mkdir build && cd build
cmake ../ && make
mv *.so ../../lib
cd ../..
export LD_LIBRARY_PATH=$(pwd)/lib:/usr/lib

到目前为止的编译过程我没有遇到问题(上述过程来源于gpb源码的readme)

编译过程-2

addpath(genpath('./'))
compile

compile 出现问题

问题1:mex函数出错,gcc版本不符合,现有的版本不是gcc 4.9(大概意思)

解决方案:参考网站

(为了防止参考网站失去连接,我也具体写一下)

# 下载CentOS 7 SCL源
# 百度云地址:https://pan.baidu.com/s/1hrPJtB2
# 下载后解压,将其中的repo文件和key文件复制到/etc/目录下:
sudo cp ./etc/* /etc -rf

# 安装devtoolset-3-gcc-c++
sudo dnf install devtoolset-3-gcc-c++

# 安装完毕,若要在当前控制台使用gcc 4.9 使用命令
scl enable devtoolset-3 bash

问题2:compile.m 55行出错,显示undefined reference to ex_index_out_of_bounds.cc

解决方案:

(1)undefined reference to 的原因是matlab找不到声明函数的实现文件

(2)

% 第55行的代码
mex ./matlab/segmentation/mex_contour_sides.cc -I./include

% 将上述代码修改为
mex ./matlab/segmentation/mex_contour_sides.cc -I./include -L./ -L../../lib -lopencv_gpb

问题3:compile.m 81行出错,显示undefined reference to cv::Mat::deallcate(大概类似)

解决方案:

灵感来源网站

% 第81行代码
mex ./buildW.cpp -I./util -L../../lib -lopencv_gpb

% 将上述代码修改为
mex ./buildW.cpp -I./util -L../../lib -lopencv_gpb -L/usr/local/lib -lopencv_core

解释:-L/usr/local/lib -lopencv_core 的意思是链接声明的编译文件位于opencv的libopencv_core.so,所以找到你电脑上的改文件选填


问题4:compile 94行会有 vector is not declared in this scope(大致意思)

解决方案: 在vector之前添加std::,最终std::vector<>


问题5:contours2ucm.m 第58行 未定义变量rows

解决方案:通过查询代码,其意思大致为得到矩阵的行列

% 第58行
for i=1:rows(seg4)-1,
	for j=1:columns(seg4)-1,
	
% 将其修改为
[row column]=size(seg4);
for i=1:row-1,
	for j=1:column-1,

至此我在编译过程中遇到的的问题解决完了。

验证编译

example

问题1:

Error using gca

'/usr/local/MATLAB/R2016a/bin/glnxa64/libmwosgserver.so':

/usr/local/MATLAB/R2016a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6:

version 'CXXABI_1.3.8' not found (required by /lib64/libGLU.so.1)

大约类似这个,总之就是matlab 2017a不能显示图像,命令行执行imshow(‘image.png’)要不就是busy,要不就报错

解决方案:

参考网站1这个网站描述跟我问题符合,但是并没解决我的问题

参考网站2这个网站内容解决了我的问题,为了防止原网站失效,将解决方案粘贴如下:

What I did was I edited a file called .matlab7rc.sh (located in "path_to_ matlab/bin" folder and its hidden) and uncommented all lines that were(there are several of them):

LDPATH_PREFIX='$MATLAB/sys/opengl/lib/$ARCH'

同时,还有意外之喜,原本我的R2017a 点击右上角的x没有反应,必须得强制关闭,但是经此修改之后,点x可以关闭matlab了。

posted @ 2017-09-21 17:54  Glen-Z  阅读(504)  评论(0编辑  收藏  举报