gcc不带multilib是什么意思?

20

我试图使用 omh.h 头文件,但发现它丢失了。我尝试使用 brew 在我的 Mac 上重新安装 gcc。这是我在安装结束时收到的消息。

..
GCC has been built with multilib support. Notably, OpenMP may not work:
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60670
If you need OpenMP support you may want to
  brew reinstall gcc --without-multilib
==> Summary
  /usr/local/Cellar/gcc/4.9.2_1: 1156 files, 203M
它建议如果我需要OpenMP支持,我需要安装brew reinstall gcc --without-multilib。我无法理解--without-multilib的含义,它与仅安装gcc有何不同?
而且显然brew reinstall gcc --without-multilib运行时间很长,而brew uninstall gcc && brew install gcc则非常快。

6
多库通常指的是64位和32位版本的每个库共存,以便32位软件可以在64位操作系统上运行。在GCC的情况下,这可能意味着所有GCC运行库都以“fat” Mach-O格式存在,即i386和x86_64版本在同一个共享库文件中。可能是因为GNU OpenMP运行库libgomp无法以这种方式构建。 - Hristo Iliev
3
就安装速度而言,安装gcc很快,因为它是从瓶子中安装(即预编译二进制文件),而--without-multilib实际上会在您的计算机上编译gcc。 - user2548418
1
安装完成后,您是否在使用gcc时遇到了OpenMP的问题?我使用brew,并且已经安装了通用瓶子(brew install gcc),并且已经使用OpenMP数月了。 - user2548418
1
@user2548418 我检查了 /usr/local/Cellar/gcc/4.9.2_1/lib/gcc/4.9/gcc/x86_64-apple-darwin11.4.2/4.9.2/include/omp.h,我的版本似乎包含 omp_lock_t 的 32 位版本定义。我认为在 64 位应用程序中使用它是不安全的。在这种情况下,MacPorts 安装了 64 位头文件,应该可以安全地日常使用。 - Yongwei Wu
1个回答

13

多架构支持意味着可以为多个架构编译二进制文件。

根据您展示的错误,只要为AMD64体系结构(64位)和IA32体系结构构建二进制文件,您就应该是安全的,因为这是您的机器所支持的。

否则,最好选择不带多架构支持的选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接