我想編譯一個在mac上使用openmp的Matlab mex程序。我想分發給其他Matlab用戶,以便他們可以使用它,而不需要安裝其他軟件。使用gcc和Matlab在mac上編譯openmp
從我可以告訴,xcode不允許這樣做,所以我已經安裝了gcc。我能夠很好地編譯程序,並在本地運行它,但它鏈接到在Mac上默認不可用的依賴項(我認爲)。尤其是,otool指向libgomp.1.dylib和libgcc_s.1.dylib,從我可以告訴的是,它不是標準的os安裝的一部分。
我能夠靜態鏈接到libgomp.a,它從一些測試(重命名.dylib文件)似乎已經正確地刪除了依賴關係(即,當我重命名dylib文件時代碼仍然有效,而otool沒有也列出它)。但是,我不確定如何刪除libgcc_s.1.dylib依賴項。在Windows中,本地複製dll將解決此問題,但這在Mac上不起作用。我無法找到該依賴關係的靜態庫。相反,我試圖讓某些版本的rpath工作(使用本地複製的文件),但是otool始終指向/usr/local/opt/gcc/lib/gcc/6/libgcc_s.1.dylib
MATLAB命令的相關部分是:
'LDFLAGS="$LDFLAGS -fopenmp -Wl,-rpath,$ORIGIN/"' and
'-lgcc_s.1'
我找到了一個解決方案在這裏:Openmp with mex in Matlab on mac
然而,另一個項目,我用gcc特定的命令,所以我真的很想得到用gcc該工作。