ubuntu16 64位 編譯64位程序和32位程序


安裝了ubuntu16 64位的系統,想在該環境下用gcc編譯64位和32位的程序

默認已經安裝了64位環境的gcc

1. 首先確認安裝的環境是不是64位的

cocoa@cocoaUKlyn:~/Desktop$ dpkg --print-architecture

以下輸出表示為64位的
amd64

2. 確認系統是否支持多架構環境

cocoa@cocoaUKlyn:~/Desktop$ dpkg --print-foreign-architectures

以下輸出表示支持32位的架構
i386

 如果不支持那么手動打開,如下

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get dist-upgrade

3. 安裝支持32編譯程序的gcc庫

sudo apt-get install gcc-multilib g++-multilib

4. 編譯一個測試程序 main.c如下

int main(int argc,char *argv[])
{
    if(argc!=2)
    {
        printf("please input one argv\n");
        return 0;
    }
    printf("argc=%d ,argv[1]=%s\n",argc,argv[1]);
    return 0;
}

5. 分別編譯出64位,32位的可執行程序,main64,main32

cocoa@cocoaUKlyn:~/Desktop$ gcc -o main32 -m32 main.c 
cocoa@cocoaUKlyn:~/Desktop$ gcc -o main64 -m64 main.c 

6. 使用file命令查看編譯的程序架構,

cocoa@cocoaUKlyn:~/Desktop$ file main64 
main64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=f8573379cf22e444381d36eec08862e69a90ae4d, not stripped
cocoa@cocoaUKlyn:~/Desktop$ file main32 
main32: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=cbff7c2ddf45b505ffd1e60adce482c0cc896475, not stripped

7. 運行編譯的64位,32位測試程序

cocoa@cocoaUKlyn:~/Desktop$ ./main64 this64
argc=2 ,argv[1]=this64
cocoa@cocoaUKlyn:~/Desktop$ ./main32 this32
argc=2 ,argv[1]=this32

 

參考:https://www.cnblogs.com/mliudong/p/4086797.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM