Error with codegen/mex (error status code 2)

1 次查看(过去 30 天)
Hi, I am trying to compile code that I know has compiled successfully on another computer. I am running Matlab 2014b on Ubuntu 12.04. Any ideas on how to fix this?
I am running the following code:
t = coder.typeof(0, [1e6 3],1);
C = coder.typeof(0, [1e6 3],1);
vt = coder.typeof(0, [1e6 3],1);
R = coder.typeof(0, [1e6 9],1);
EV = coder.typeof(0, [1e6 3 3],1);
codegen CalRigidEnergy3d -args { EV,t,vt,C,R }
This refers to the file CalRigidEnergy3d:
function E=CalRigidEnergy3d(EV,t,U,C,R)
E=0;
Eij = zeros(3,1);
for i=1:size(t,1)
rot=reshape(R(i,:),[3 3]);
for j=0:2
j1=j+1;
j2=mod(j+1,3)+1;
j3=mod(j+2,3)+1;
idx2=t(i,j2);
idx3=t(i,j3);
Uij=U(idx3,:)-U(idx2,:);
Eij(1,1)=EV(i,j1,1);
Eij(2,1)=EV(i,j1,2);
Eij(3,1)=EV(i,j1,3);
E=E+C(i,j1)*norm(Uij'-rot*Eij)^2;
end
end
Running mex -setup returns the following:
MEX configured to use 'gcc' for C language compilation.
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the
new API. You can find more information about this at:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.
To choose a different language, select one from the following:
mex -setup C++
mex -setup FORTRAN
The error given is:
??? Build error: Compilation returned error status code 2. See the target build log in the report for further details.
Error in ==> CalRigidEnergy3d Line: 1 Column: 1
Code generation failed: Open error report.
Error using codegen (line 146)
The Build Log is:
1 /usr/bin/gcc -c -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -D_GNU_SOURCE -DMATLAB_MEX_FILE -DMX_COMPAT_32 -O -DNDEBUG -I "/usr/local/MATLAB/R2014b/simulink/include" -I "/usr/local/MATLAB/R2014b/toolbox/shared/simtargets" -I "/home/ari" -I "/home/ari/codegen/mex/CalRigidEnergy3d" -I "/home/ari/codegen/mex/CalRigidEnergy3d/interface" -I "/usr/local/MATLAB/R2014b/extern/include" -I "." "CalRigidEnergy3d_data.c"
2 /usr/bin/gcc -c -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -D_GNU_SOURCE -DMATLAB_MEX_FILE -DMX_COMPAT_32 -O -DNDEBUG -I "/usr/local/MATLAB/R2014b/simulink/include" -I "/usr/local/MATLAB/R2014b/toolbox/shared/simtargets" -I "/home/ari" -I "/home/ari/codegen/mex/CalRigidEnergy3d" -I "/home/ari/codegen/mex/CalRigidEnergy3d/interface" -I "/usr/local/MATLAB/R2014b/extern/include" -I "." "CalRigidEnergy3d_initialize.c"
3 /usr/bin/gcc -c -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -D_GNU_SOURCE -DMATLAB_MEX_FILE -DMX_COMPAT_32 -O -DNDEBUG -I "/usr/local/MATLAB/R2014b/simulink/include" -I "/usr/local/MATLAB/R2014b/toolbox/shared/simtargets" -I "/home/ari" -I "/home/ari/codegen/mex/CalRigidEnergy3d" -I "/home/ari/codegen/mex/CalRigidEnergy3d/interface" -I "/usr/local/MATLAB/R2014b/extern/include" -I "." "CalRigidEnergy3d_terminate.c"
4 /usr/bin/gcc -c -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -D_GNU_SOURCE -DMATLAB_MEX_FILE -DMX_COMPAT_32 -O -DNDEBUG -I "/usr/local/MATLAB/R2014b/simulink/include" -I "/usr/local/MATLAB/R2014b/toolbox/shared/simtargets" -I "/home/ari" -I "/home/ari/codegen/mex/CalRigidEnergy3d" -I "/home/ari/codegen/mex/CalRigidEnergy3d/interface" -I "/usr/local/MATLAB/R2014b/extern/include" -I "." "CalRigidEnergy3d.c"
5 /usr/bin/gcc -c -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -D_GNU_SOURCE -DMATLAB_MEX_FILE -DMX_COMPAT_32 -O -DNDEBUG -I "/usr/local/MATLAB/R2014b/simulink/include" -I "/usr/local/MATLAB/R2014b/toolbox/shared/simtargets" -I "/home/ari" -I "/home/ari/codegen/mex/CalRigidEnergy3d" -I "/home/ari/codegen/mex/CalRigidEnergy3d/interface" -I "/usr/local/MATLAB/R2014b/extern/include" -I "." "interface/_coder_CalRigidEnergy3d_api.c"
6 /usr/bin/gcc -c -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -D_GNU_SOURCE -DMATLAB_MEX_FILE -DMX_COMPAT_32 -O -DNDEBUG -I "/usr/local/MATLAB/R2014b/simulink/include" -I "/usr/local/MATLAB/R2014b/toolbox/shared/simtargets" -I "/home/ari" -I "/home/ari/codegen/mex/CalRigidEnergy3d" -I "/home/ari/codegen/mex/CalRigidEnergy3d/interface" -I "/usr/local/MATLAB/R2014b/extern/include" -I "." "CalRigidEnergy3d_emxutil.c"
7 /usr/bin/gcc -c -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -D_GNU_SOURCE -DMATLAB_MEX_FILE -DMX_COMPAT_32 -O -DNDEBUG -I "/usr/local/MATLAB/R2014b/simulink/include" -I "/usr/local/MATLAB/R2014b/toolbox/shared/simtargets" -I "/home/ari" -I "/home/ari/codegen/mex/CalRigidEnergy3d" -I "/home/ari/codegen/mex/CalRigidEnergy3d/interface" -I "/usr/local/MATLAB/R2014b/extern/include" -I "." "interface/_coder_CalRigidEnergy3d_mex.c"
8 /usr/bin/gcc -c -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -D_GNU_SOURCE -DMATLAB_MEX_FILE -DMX_COMPAT_32 -O -DNDEBUG -I "/usr/local/MATLAB/R2014b/simulink/include" -I "/usr/local/MATLAB/R2014b/toolbox/shared/simtargets" -I "/home/ari" -I "/home/ari/codegen/mex/CalRigidEnergy3d" -I "/home/ari/codegen/mex/CalRigidEnergy3d/interface" -I "/usr/local/MATLAB/R2014b/extern/include" -I "." "interface/_coder_CalRigidEnergy3d_info.c"
9 /usr/bin/gcc -Wl,--version-script,CalRigidEnergy3d_mex_mex.map -pthread -Wl,--no-undefined -Wl,-rpath-link,/usr/local/MATLAB/R2014b/bin/glnxa64 -shared -L/usr/local/MATLAB/R2014b/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++ -o CalRigidEnergy3d_mex.mexa64 CalRigidEnergy3d_data.o CalRigidEnergy3d_initialize.o CalRigidEnergy3d_terminate.o CalRigidEnergy3d.o _coder_CalRigidEnergy3d_api.o CalRigidEnergy3d_emxutil.o _coder_CalRigidEnergy3d_mex.o _coder_CalRigidEnergy3d_info.o -lemlrt -lcovrt -lut -lmwmathutil -lmwblas
10 _coder_CalRigidEnergy3d_api.o: In function `c_emlrt_marshallIn':
11 _coder_CalRigidEnergy3d_api.c:(.text+0xb0): undefined reference to `mxGetData'
12 _coder_CalRigidEnergy3d_api.o: In function `CalRigidEnergy3d_api':
13 _coder_CalRigidEnergy3d_api.c:(.text+0x2cb): undefined reference to `mxGetData'
14 _coder_CalRigidEnergy3d_api.c:(.text+0x427): undefined reference to `mxGetData'
15 _coder_CalRigidEnergy3d_mex.o: In function `mexFunction':
16 _coder_CalRigidEnergy3d_mex.c:(.text+0x3e): undefined reference to `mexAtExit'
17 _coder_CalRigidEnergy3d_info.o: In function `b_emlrt_marshallOut':
18 _coder_CalRigidEnergy3d_info.c:(.text+0x62): undefined reference to `mxGetData'
19 _coder_CalRigidEnergy3d_info.o: In function `emlrtMexFcnProperties':
20 _coder_CalRigidEnergy3d_info.c:(.text+0x8cac): undefined reference to `mxCreateStructMatrix_700'
21 _coder_CalRigidEnergy3d_info.c:(.text+0x8cc7): undefined reference to `mxCreateStructMatrix_700'
22 _coder_CalRigidEnergy3d_info.c:(.text+0x8cd9): undefined reference to `mxCreateLogicalMatrix_700'
23 _coder_CalRigidEnergy3d_info.c:(.text+0x8ce8): undefined reference to `mxCreateString'
24 _coder_CalRigidEnergy3d_info.c:(.text+0x8cfd): undefined reference to `mxSetFieldByNumber_700'
25 _coder_CalRigidEnergy3d_info.c:(.text+0x8d0a): undefined reference to `mxCreateDoubleScalar'
26 _coder_CalRigidEnergy3d_info.c:(.text+0x8d1f): undefined reference to `mxSetFieldByNumber_700'
27 _coder_CalRigidEnergy3d_info.c:(.text+0x8d2c): undefined reference to `mxCreateDoubleScalar'
28 _coder_CalRigidEnergy3d_info.c:(.text+0x8d41): undefined reference to `mxSetFieldByNumber_700'
29 _coder_CalRigidEnergy3d_info.c:(.text+0x8d56): undefined reference to `mxSetFieldByNumber_700'
30 _coder_CalRigidEnergy3d_info.c:(.text+0x8d62): undefined reference to `mxCreateString'
31 _coder_CalRigidEnergy3d_info.c:(.text+0x8d77): undefined reference to `mxSetFieldByNumber_700'
32 _coder_CalRigidEnergy3d_info.c:(.text+0x8d91): undefined reference to `mxSetFieldByNumber_700'
33 _coder_CalRigidEnergy3d_info.c:(.text+0x8da6): undefined reference to `mxSetFieldByNumber_700'
34 collect2: ld returned 1 exit status
35 gmake: *** [CalRigidEnergy3d_mex.mexa64] Error 1

采纳的回答

Ryan Livingston
Ryan Livingston 2014-11-20
The version of GCC shipped with Ubuntu is not compatible with the Makefile generated by MATLAB Coder. You can edit the template for this Makefile in your MATLAB installation to work around this by following the answer:

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB Coder 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by