`
SmartGeek
  • 浏览: 71671 次
  • 来自: 南京
社区版块
存档分类

64位 Linux 编译32位应用程序

阅读更多
1. Redhat 系 Linux

以 Scientific Linux 6.2 为例:
Scientific Linux 与 Centos 都是 Redhat Linux 的民间再发行版。因为它们既有Redhat的稳定,又可以及时免费更新Bugfix,所以比较流行。其中Scientific Linux由费米实验室维护,公司内的编译服务器都安装此版本。

uname -r 结果是:2.6.32-220.17.1.e16.x86_64, 确认是64位环境。

先检查编译环境是否完备。确认下"Development tools", "Compatibility libraries" 这两个组件有没有安装:
$ yum grouplist "Development tools" "Compatibility libraries"

没装则装上:
$ yum groupinstall "Development tools"
$ yum groupinstall "Compatibility libraries"

另外还需要安装 glibc-devel 的32位版
$ yum install glibc-devel.i686

下面写段代码测试下:
/* test.c */
#include <stdio.h>
int main()
{
    printf("sizeof long is %d\n", sizeof(long));
    return 0;
}

64位编译执行结果:
$ gcc test.c
$ file a.out
a.out: ELF 64-bit LSB executable ...
$ ./a.out
sizeof long is 8

32位编译执行结果 (在64位系统编译32位程序需要给 GCC 加 -m32 参数):
$ gcc -m32 test.c
$ file a.out
a.out: ELF 32-bit LSB executable ...
$ ./a.out
sizeof long is 4


2. Debian 系 Linux

以 ubuntu 12.04 为例:

uname -p 结果:x86-64, 确认是64位环境。
ubuntu 中需要安装以下包:
$ apt-get install build-essential module-assistant
$ apt-get install gcc-multilib g++-multilib

测试过程同上。
分享到:
评论

相关推荐

    linux驱动程序编译以及应用程序编译

    在编译应用程序时,可以使用 -c 选项只编译成目标文件,而不继续编译成可执行文件。这可以方便地在不同的平台上编译和链接应用程序。 Linux 驱动程序编译和应用程序编译是 Linux 系统开发的重要步骤,需要掌握相关...

    cximage静态库 动态库 64位linux版本

    在IT行业中,库是软件开发中的重要组成部分,它们提供预编写的功能,使开发者可以更高效地构建应用程序。这里我们关注的是cximage库,一个适用于图像处理的C++库,特别适用于64位Linux环境。本篇文章将深入探讨...

    linux中编译的mediainfo执行程序

    Mediainfo 源码编译后生成的可执行程序可以在各种Linux发行版中运行,这得益于其跨平台的设计和对Linux系统的广泛兼容性。以下是关于 Mediainfo 及其在Linux中编译过程的相关知识点: 1. **Mediainfo 工具**:...

    Linux应用程序开发详解

    《Linux应用程序开发详解》这本书是为初学者量身打造的一份全面而详尽的Linux开发指南。它旨在帮助读者从零开始,逐步掌握在Linux环境下进行应用程序开发的各种技术和工具。书中的内容涵盖了从基础的Linux操作系统...

    linux应用程序例子

    在Linux操作系统中,应用程序是系统的核心组成部分,它们提供了丰富的功能,涵盖了从基本的命令行工具到复杂的图形用户界面(GUI)应用。本篇文章将详细探讨Linux应用程序的各种类型、使用方式以及如何通过`doc`和`...

    golang 1.9.5 Linux编译环境 64位amd

    总之,Golang 1.9.5 Linux编译环境为64位AMD提供了强大的开发工具,它结合了Go语言的简洁语法、高效的并发模型以及跨平台能力,是构建大规模分布式系统的理想选择。正确配置和使用这个环境,能够帮助开发者充分利用...

    java linux 编译环境配置及程序编译执行.txt

    随着Linux系统在服务器领域的广泛应用,越来越多的开发者选择在Linux环境下进行Java应用程序的开发与部署。本文将详细介绍如何在Red Hat Enterprise Linux Server release 5.4 (Tikanga) 32位操作系统上配置Java编译...

    live555linux_64位编译结果

    "live555linux_64位编译结果"是一个专为64位Linux系统编译的软件包,主要用于处理RTSP(Real Time Streaming Protocol)流的收发工作。RTSP是一种应用层协议,用于控制多媒体数据的传输,通常用于视频和音频的实时流...

    linux下GCC编译C程序

    【GCC编译C程序】是Linux环境中开发C语言软件的核心环节。GNU编译器集(GCC),最初称为GNU C编译器,由Richard Stallman在1987年发起,旨在构建符合自由软件理念的编译器,用于构建GNU项目中的其他软件。GCC很快因...

    xilinx-arm-linux 交叉编译工具链

    使用这套工具链,开发者可以编译Linux内核以及驱动程序、应用程序等,以适应ZED Board或其他基于ZYNQ的开发板。这涉及到配置Makefile、设置正确的编译选项,并且可能需要对内核源码进行特定的修改以适配硬件。 标签...

    poco c++ linux 可编译使用

    Poco是一个开源的C++库,它为开发跨平台的应用程序提供了一系列的工具和类库。这个库包含了大量的模块,如网络、数据库访问、XML处理、JSON解析、加密、日志记录、线程管理和时间处理等,使得开发者可以快速构建复杂...

    58-Make与Makefile在Linux内核体系编译中的应用

    本主题将深入探讨这两个工具在Linux内核体系编译中的应用。 首先,Make是一个自动化构建工具,它能够简化编译过程,根据依赖关系自动执行编译命令。在大型项目中,如Linux内核,源代码文件数量庞大,手动管理编译...

    aarch64-himix210-linux 交叉编译工具包

    "aarch64-himix210-linux 交叉编译工具包"是专为在aarch64架构(ARM 64位)的HiMix210平台进行Linux应用程序开发设计的一整套工具。本文将深入探讨这一工具包及其相关知识点。 首先,我们要理解什么是交叉编译。...

    编译32位和64位luajava的方法

    - 如果你需要支持32位和64位,那么需要分别编译并生成两个JAR文件,一个用于32位系统,一个用于64位系统。 5. **测试**: - 编译完成后,通过编写简单的Java程序测试`luajava`是否能正常工作。这通常涉及加载JAR...

    Qt Mysql linux驱动编译.docx

    在开发基于Qt的应用程序并尝试连接到MySQL数据库时,可能会遇到一个常见的问题,即控制台显示错误信息"QSqlDatabase: QMYSQL driver not loaded"。这个错误表明Qt无法找到对应的MySQL驱动,即libqsqlmysql.so,这...

    嵌入式Linux应用程序开发详解

    《嵌入式Linux应用程序开发详解》是一本专为想要深入理解和实践Linux应用程序开发的读者精心编写的指南。这本书结合了理论与实践,旨在帮助读者掌握在嵌入式系统环境中进行Linux应用开发的关键技能。通过阅读本书,...

    linux下编译oracle驱动qoci

    ### Linux下编译Oracle驱动QOCI的详细步骤与解析 #### 标题解析 - **Linux下编译Oracle驱动QOCI**:此标题表明文章的主要内容是在Linux...这对于那些希望在Qt应用程序中集成Oracle数据库功能的开发者来说非常有帮助。

    gcc,g++的32位安装包

    在64位的Linux系统上,由于默认可能只安装了64位版本的开发工具,因此在需要编译32位应用程序时,可能就会遇到问题。"gcc,g++的32位安装包"就是为了解决这种状况,确保在64位系统上也能支持32位代码的编译。 1. **...

Global site tag (gtag.js) - Google Analytics