zoukankan      html  css  js  c++  java
  • 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
    ");
            return 0;
        }
        printf("argc=%d ,argv[1]=%s
    ",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

  • 相关阅读:
    1.6 linux基础(六)
    1.5 Linux基础(五)
    1.4 linux基础(四)
    在win10中安装VB的方法
    重新拾起这个博客
    实验11-2-2 学生成绩链表处理
    实验11-1-9 藏尾诗
    实验11-1-8 查找子串
    实验11-1-6 指定位置输出字符串
    实验9-8 通讯录排序
  • 原文地址:https://www.cnblogs.com/cocoajin/p/7807977.html
Copyright © 2011-2022 走看看