在 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
我尝试运行一个非常简单的代码,但是它报错,谁能给点建议?我正在使用 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