centos64位編譯32位程序
阿新 • • 發佈:2018-09-04
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 speedsfrom 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位程序