Мне нужно скомпилировать кусок кода на 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