centos64位编译32位程序

test.c

#include <stdio.h>
int main()
{
        printf("sizeof long is %d\n",sizeof(long));
        return 0;
}

64位编译

[[email protected] desktop]$ gcc test.c[[email protected] desktop]$ file a.outa.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped[[email protected] desktop]$ 

32位编译

[[email protected] desktop]$ gcc -m32 test.c

错误1:缺少32位头文件

解决方法:

[[email protected] desktop]$ yum install glibc.i686

错误2:再次编译,发现编译成功,链接失败,提示如下错误

解决方法:

先查看64位文件版本

[[email protected] desktop]$ yum list libgcc
已加载插件:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
已安装的软件包
libgcc.x86_64                                                                      4.8.2-8.el6                                                                        @hop5  

由于yum提供的32版本低于64位的版本,使用yum install libgcc.i686会安装失败,因此需自己下载32位版本进行安装

下载地址:https://pkgs.org/download/libgcc

安装libgcc.i686

[[email protected] desktop]$ sudo rpm -ivh libgcc-4.8.5-28.el7.i686.rpm

安装完成后重新编译程序

[[email protected] desktop]$ gcc -m32 test.c
[[email protected] desktop]$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
[[email protected] desktop]$ a.out
sizeof long is 4
[[email protected] desktop]$

显示已经可以编译32位程序了。

原文地址:https://www.cnblogs.com/mxly/p/9583580.html

时间: 2024-10-10 04:21:39

centos64位编译32位程序的相关文章

在64位linux上编译32位程序

ld指令有一个选项:--oformat output_format,用于指定输出文件的格式.输入文件./kernel/kernel.o等是elf32格式,当前系统是64位,而ld默认生成的文件格式是elf64-x86-64:因此会出现"ld: warning: i386 architecture of input file `./kernel/kernel.o' is incompatible with i386:x86-64 output"这样的提示.之前,将系统从三墩转移到我自己的

64位ubuntu编译32位程序

64位ubuntu编译32位程序 如上使用C4这个小工具时遇到来需要仿真32位系统的需求,发现使用-m32参数后,编译提示错误,如下: /usr/bin/ld: 未知的仿真模式: 32 支持的仿真: elf_x86_64 elf32_x86_64 elf_i386 i386linux elf_l1om elf_k1om i386pep i386pe collect2: error: ld returned 1 exit status 首先要打开64位系统对32位的支持 第一步:确认64为架构的内

ubuntu16 64位 编译64位程序和32位程序

安装了ubuntu16 64位的系统,想在该环境下用gcc编译64位和32位的程序 默认已经安装了64位环境的gcc 1. 首先确认安装的环境是不是64位的 [email protected]:~/Desktop$ dpkg --print-architecture 以下输出表示为64位的 amd64 2. 确认系统是否支持多架构环境 [email protected]:~/Desktop$ dpkg --print-foreign-architectures 以下输出表示支持32位的架构 i3

&lt;摘录&gt;如何在64位linux强制编译32位应用程序

GDC注:因为需要解决在linux64机上编译32位的mongodb(没办法,因为编译的php是32位,然后我想将mongdb扩展添加到php中),在网上搜了很多文章,感觉这篇好懂,而且好用.我使用的是方法一,具体为: > linux32 ./configure --with-php-config=/usr/local/php/bin/php-config > export CFLAGS="-m32 -04 -march=i386 -mtune=i386" > mak

hadoop2.6.0汇总:新增功能最新编译 32位、64位安装、源码包、API下载及部署文档

相关内容: hadoop2.5.2汇总:新增功能最新编译 32位.64位安装.源码包.API.eclipse插件下载Hadoop2.5 Eclipse插件制作.连接集群视频.及hadoop-eclipse-plugin-2.5.0插件下载hadoop2.5.1汇总:最新编译 32位.64位安装.源码包.API下载及新特性等 新手指导:hadoop官网介绍及如何下载hadoop(2.4)各个版本与查看hadoop API介绍 从零教你在Linux环境下(ubuntu 12.04)如何编译hadoo

[MinGW]_[初级]_[64位的windres如何编译32位的链接文件]

场景: 1.   MinGW(TDM)出了64位的gcc,4.8.1,64位对编译64位的程序非常友好,但是对编译32位程序就需要做额外的工作了. 2.  比如用windres编译manifest,64位环境下默认是不行的,带configure或makefile的即使加了-m32都不会自动对windres设置为编译32位的. 这里就需要在configure或make增加一些参数了. ./configure RCFLAGS="--output-format=coff --target=pe-i38

%1不是有效的 win32应用程序(64位转换32位)

phpmyadmin打开时候显示 HTTP500内部服务器错误,用火狐浏览器显示的是%1不是有效的 win32应用程序.谷歌一下,终于找出问题,原来是windows2003 64位的操作系统和32位IIS的问题..最终找到解决方法如下: 要运行 32 位版本的 ASP.NET 2.0,请按照以下步骤操作:1. 单击"开始",单击"运行",键入 cmd,然后单击"确定". 2. 键入以下命令启用 32 位模式: cscript %SYSTEMDRI

hadoop2.5发布:最新编译 32位、64位安装、源码包、API以及新特性

hadoop2.5发布:最新编译 32位.64位安装.源码包.API以及新特性 http://www.aboutyun.com/thread-8751-1-1.html (出处: about云开发) 问题导读:1.如何获取Hadoop安装包?2.编译Hadoop过程中,需要注意哪些问题?3.如何寻找API?4.如何获取Hadoop源码? 上述问题有的在本文,有的则在本文链接,感兴趣,可以找找答案 2014年08月06日 Hadoop2.5发布 官网下载地址 对Hadoop2.5进行了编译,编译的

HTTP500错误:%1不是有效的 win32应用程序(64位转换32位)

IE--internet选项--高级--"显示友好的HTTP错误信息"  前面的勾取消 网站具体错误信息:%1不是有效的 win32应用程序(64位转换32位) 原因:在windows 2003 64位系统上安装完iis后,运行PHP文件提示%1不是有效的 win32应用程序,原来是windows2003  64位的操作系统和32                                       位IIS的问题. 解决办法:要运行 32 位版本的 ASP.NET 2.0 具体