码迷,mamicode.com
首页 > 其他好文 > 详细

centos64位编译32位程序

时间:2018-09-04 13:43:17      阅读:1097      评论:0      收藏:0      [点我收藏+]

标签:tar   package   return   mirror   安装失败   host   printf   ret   mirrors   

test.c

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

64位编译

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

32位编译

[swdn@dev desktop]$ gcc -m32 test.c

错误1:缺少32位头文件

技术分享图片

解决方法:

[swdn@dev desktop]$ yum install glibc.i686

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

技术分享图片

解决方法:

先查看64位文件版本

[swdn@dev 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

[swdn@dev desktop]$ sudo rpm -ivh libgcc-4.8.5-28.el7.i686.rpm

安装完成后重新编译程序

[swdn@dev desktop]$ gcc -m32 test.c
[swdn@dev 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
[swdn@dev desktop]$ a.out
sizeof long is 4
[swdn@dev desktop]$

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

centos64位编译32位程序

标签:tar   package   return   mirror   安装失败   host   printf   ret   mirrors   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!