在 Ubuntu 上尝试使用 gcc 构建胖通用二进制文件时出错

Error trying to build a fat universal binary with gcc on Ubuntu

我尝试运行一个非常简单的代码,但是它报错,谁能给点建议?我正在使用 Ubuntu14 和 gcc4.9.

xin@ubuntu:~/pipes$ gcc -arch i386 -arch x86_64 channel.cpp
gcc: error: i386: No such file or directory
gcc: error: x86_64: No such file or directory
gcc: error: unrecognized command line option ‘-arch’
gcc: error: unrecognized command line option ‘-arch’

看起来您正在尝试使用 Apple OS/X (Darwin) GCC/CLang 方法将代码编译为具有 2 种架构的通用二进制文件。

Linux(包括Ubuntu)不同。 Linux 没有对单个可执行文件中的多个目标的通用二进制支持。每个构建是一个架构。如果您的目标是 32 位二进制文​​件,请删除 -arch i386 -arch x86_64 并将其替换为 -m32,如果您的目标是 64 位二进制文​​件,请删除 -m64

32 位:

gcc -m32 channel.cpp 

64 位

gcc -m64 channel.cpp

特殊注意事项

您可能还必须安装 Multilib 版本的 GCC(和 G++,如果你想要),这样你就可以使用适当的 C 库在 64 位 Ubuntu 上正确构建和 运行 32 位应用程序。这可以用这个命令行来完成:

sudo apt-get install gcc-multilib g++-multilib

在其他非Ubuntu 基于 Debian 的系统上,您需要使用:

apt-get install gcc-multilib g++-multilib