【发布时间】:2017-03-11 21:53:47
【问题描述】:
我正在尝试编译一个在 mac 上使用 openmp 的 Matlab mex 程序。我想将此分发给其他 Matlab 用户,以便他们可以使用它,而无需安装其他软件。
据我所知,xcode 不允许这样做,所以我安装了 gcc。我能够很好地编译程序,并在本地运行它,但它链接到默认情况下在 mac 上不可用的依赖项(我认为)。特别是,otool 指向 libgomp.1.dylib 和 libgcc_s.1.dylib,据我所知,它们不是标准操作系统安装的一部分。
我能够静态链接到 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。
【问题讨论】: