1. 程式人生 > >centos64位編譯32位程序

centos64位編譯32位程序

rom 編譯程序 span libs \n fas swd mirror 因此

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位程序