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
Best Answer