Error with codegen/mex (error status code 2)

1 view (last 30 days)
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

Accepted Answer

Ryan Livingston
Ryan Livingston on 20 Nov 2014
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:
  1 Comment
Ari Kapusta
Ari Kapusta on 24 Nov 2014
Thank you very much!
The method in that link fixes the issue.

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB Coder in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!