Компиляция кода C для 64-битного Matlab на Intel MAC - PullRequest
2 голосов
/ 11 августа 2010

Мне нужно скомпилировать кусок кода на C для вызова из matlab (mex compiling). Я делаю это на Intel Mac и, так как я использую Matlab R2010a (7.10.0.499), я хотел бы скомпилировать код C в версию для 64-битной версии. По какой-то причине простое выполнение mex с опцией -arch = maci64 не сработало ...

Как способ, я компилирую код C в файл mexmaci64 прямо в командной строке. В качестве отправной точки я использовал вызовы gcc, сделанные mex (с включенной опцией -v). Мне удалось скомпилировать код C в объектный файл, но похоже, что я не компилирую код C в правильную архитектуру.

Кто-нибудь знает, как исправить приведенные ниже вызовы gcc, чтобы код C компилировался в 64-битные Intel Mac?

Подробности перечислены ниже.

Как всегда, любая помощь очень ценится ...

Продолжайте пить, друзья мои. : Р

G

ОПИСАНИЕ:

Вот как я сделал компиляцию и компоновку:

gcc -c  -I/Applications/MATLAB_R2010a.app/extern/include -DMATLAB_MEX_FILE -fno-common -no-cpp-precomp -fexceptions -D MACVERSION  -DMX_COMPAT_32 -O3 -DNDEBUG  "BoxQP.c"

gcc -O -bundle -Wl,-flat_namespace -undefined suppress -Wl,-exported_symbols_list,/Applications/MATLAB_R2010a.app/extern/lib/maci64/mexFunction.map -o  "BoxQP.mexmaci64"  BoxQP.o  -L/Applications/MATLAB_R2010a.app/bin/maci64 -lmx -lmex -lmat -lstdc++

Вот предупреждения, которые я получаю:

ld warning: in /Applications/MATLAB_R2010a.app/bin/maci64/libmx.dylib, file is not of required architecture
ld warning: in /Applications/MATLAB_R2010a.app/bin/maci64/libmex.dylib, file is not of required architecture
ld warning: in /Applications/MATLAB_R2010a.app/bin/maci64/libmat.dylib, file is not of required architecture

Игнорирование предупреждений и вызов функции BoxQP из matlab приводит к следующему сообщению об ошибке:

??? Invalid MEX-file '/Users/gvrocha/Documents/academic/projects/splice/code/matlab/covsel/BoxQP.mexmaci64':
dlopen(/Users/gvrocha/Documents/academic/projects/splice/code/matlab/covsel/BoxQP.mexmaci64, 1): no suitable image found.  
Did find: /Users/gvrocha/Documents/academic/projects/splice/code/matlab/covsel/BoxQP.mexmaci64: mach-o, but wrong architecture.

PS: я пытался изменить флаг -DMX_COMPAT_32 на -DMX_COMPAT_64, но я получаю те же предупреждения и ту же ошибку ...

PPS: Полагаю, уместно упомянуть, что я использую Mac OS X 10.5.8 («тропический» / «простой ванильный леопард», т.е. не снежный барс).

PPPS: то же самое происходит с примером yprime.c, предоставленным MATLAB

...