【问题标题】:Error trying to build a fat universal binary with gcc on Ubuntu尝试在 Ubuntu 上使用 gcc 构建胖通用二进制文件时出错
【发布时间】:2016-05-17 16:36:25
【问题描述】:
我尝试运行一个非常简单的代码,但它报告错误,任何人都可以提供一些建议吗?我正在使用 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’
【问题讨论】:
标签:
ubuntu
gcc
architecture
x86-64
i386
【解决方案1】:
看起来您正在尝试使用 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