构建胖通用二进制文件时出错

构建胖通用二进制文件时出错

本文介绍了尝试在 Ubuntu 上使用 gcc 构建胖通用二进制文件时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试运行一个非常简单的代码,但它报告错误,有人可以提供一些建议吗?我使用的是 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 位二进制),如果目标是 -m6464 位二进制.

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

特别注意事项

您可能还需要安装 GCCMultilib 版本(如果需要,还可以安装 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 构建胖通用二进制文件时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 12:08