问题描述
我尝试运行一个非常简单的代码,但它报告错误,有人可以提供一些建议吗?我使用的是 Ubuntu14 和 gcc4.9.
I try to run a very simple code, but it reports error, can anyone give some suggestions? I am using Ubuntu14 and 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 种架构的通用二进制文件.
Looks like you are trying to use the Apple OS/X (Darwin) GCC/CLang method of compiling code to a universal binary with 2 architectures.
它在 Linux(包括 Ubuntu)上有所不同.Linux 没有对单个可执行文件中的多个目标的通用二进制支持.每个构建是一个架构.删除 -arch i386 -arch x86_64
并用 -m32
替换它(如果您的目标是 32 位二进制),如果目标是 -m64
64 位二进制.
It is different on Linux (including Ubuntu). Linux doesn't have universal binary support for multiple targets in a single executable. It is one architecture per build. Remove -arch i386 -arch x86_64
and replace it with -m32
if you are targeting a 32-bit binary, and -m64
if targeting a 64 bit binary.
32 位:
gcc -m32 channel.cpp
64 位
gcc -m64 channel.cpp
特别注意事项
您可能还需要安装 GCC 的 Multilib 版本(如果需要,还可以安装 G++),以便您可以正确构建和使用适当的 C 库在 64 位 Ubuntu 上运行 32 位应用程序.这可以通过以下命令行完成:
Special Considerations
You may also have to install the Multilib versions of GCC (and G++ if you want to) so that you can properly build and run 32-bit applications on 64-bit Ubuntu using the appropriate C libraries. That can be done with this command line:
sudo apt-get install gcc-multilib g++-multilib
在您需要使用的其他非基于 Ubuntu Debian 的系统上:
On other non-Ubuntu Debian based systems you'd need to use:
apt-get install gcc-multilib g++-multilib
这篇关于尝试在 Ubuntu 上使用 gcc 构建胖通用二进制文件时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!