zoukankan      html  css  js  c++  java
  • 关于在64位linux下开发32位linux程序的一些问题,ubuntu,debian,opensuse

    1,debian x64上支行ubuntuX64编译的32位程序 

    Linux debian 4.19.0-8-amd64 #1 SMP Debian 4.19.98-1 (2020-01-26) x86_64

    需要安装包

    apt-get install lib32stdc++6
    apt install glibc-devel.i686 glibc-devel
    apt-get install lib32z1-dev

    apt install libc6-dev-i386

    软件包:lib32z1-dev(1:1.2.8.dfsg-2+deb8u1) [security]
    lib32z1-dev 的相关链接
    Screenshot
    Debian 的资源:
    报告问题
    开发者信息
    Debian Changelog
    版权文件
    Debian 补丁追踪网站
    下载源码包 zlib:
    [zlib_1.2.8.dfsg-2+deb8u1.dsc]
    [zlib_1.2.8.dfsg.orig.tar.gz]
    [zlib_1.2.8.dfsg-2+deb8u1.debian.tar.xz]
    维护者:
    Mark Brown (QA 页面)
    外部的资源:
    主页 [zlib.net]
    相似软件包:
    lib64z1-dev
    libz-mingw-w64-dev
    lib32z1
    libz-mingw-w64
    zlib1g-dev
    libn32z1-dev
    zlib1g-dbg
    lib64z1
    zlib1g
    compression library - 32 bit development
    zlib is a library implementing the deflate compression method found in gzip and PKZIP. This package includes the development support files for building 32 bit applications.
    
    其他与 lib32z1-dev 有关的软件包
    依赖
    推荐
    建议
    增强
    dep: lib32c-dev
    本虚包由这些包填实: libc6-dev-i386
    dep: lib32z1 (= 1:1.2.8.dfsg-2+deb8u1)
    compression library - 32 bit runtime
    dep: zlib1g-dev (= 1:1.2.8.dfsg-2+deb8u1)
    压缩库 - 开发文件

    有32位的环境后,在/下可以看见

     lib32,lib64的库,程序就可以运行了.

    使用file ,ldd 命令查看

     可以正常加载x86的地址了.

    2,opensuse

    openSUSE-Update-Leap-15.1 ,x64

    zyppper install glibc-devel-32bit
    zypper install libstdc++-devel-32bit 
    zypper install libstdc++6-32bit  
    前几天在64位linux下开发跨平台的代码,包括32位和64位的版本都需要编译,在给g++加上-m32开关之后,g++报了一个错误:
    
    gnu/stubs-32.h: No such file or directory compilation terminated. make: ***
    
    在网上翻了一圈,情况就是64位linux缺省只安装了64位的头文件和Lib版本,需要增加32位的版本库,网上提到的安装方法一般是CentOs, Ubuntu之类的发行版,我用的是OpenSuse,最后在老外的网页上找到了一个比较全面的各个版本的安装说明:
    
    You need 32bit embedded GNU C Library. This incldes development Libraries, header files, contains the symlinks, headers, and object files needed to compile and link programs which use the standard C library.
    
    Fix for Debian Linux
    Type the following command:
    $ sudo apt-get install libc6-dev
    
    Fix for Ubuntu Linux
    Type the following command:
    $ sudo apt-get install libc6-dev-i386
    
    Fix for OpenSUSE / Novell Suse Linux (SLES)
    Type the following command:
    # zypper in glibc-devel-32bit
    
    Fix for RHEL / Fedora / CentOS / Scientific Linux
    Type the following command:
    # yum install glibc-devel.i686
    
     
    
    安装了头文件,还要注意安装库文件,方法同上,包括以下库:
    
    gcc-32bit gcc7-32bit libstdc++6-gcc7-32bit libstdc++6-gcc7-locale libstdc++6-locale

     3,ubuntu x64上支行32位程序 

    Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_64)

    apt-get install ia32-libs
    apt-get install lib32ncurses5 ​
    apt-get install lib32z1
    apt-get install lib32z1-dev
    apt install libc6-dev-i386
    Ubuntu apt-get install ia32 for 32-bit on 64-bit
    先更新 ia32的库
    
    复制代码
    https://www.cnblogs.com/tianciliangen/articles/3395973.html
    
    
    To install 32-bit libraries on a 64-bit linux system
    Install:
    
      $ apt-get install ia32-libs
    To install 32-bit libraries for development
    Install:
    
      $ apt-get install lib32gcc1 libc6-i386 lib32z1 lib32stdc++6
      $ apt-get install lib32asound2 lib32ncurses5 lib32gomp1 lib32z1-dev lib32bz2-dev
      $ apt-get install g++-multilib
    You may need this too, or it may be a virtual package already provided:
    
      $ apt-get install ia32-libs-gtk
    You may need a symlink, which g++-multilib may set up for you automatically:
    
      $ ln -s /usr/lib32/libstdc++.so.6 /usr/lib32/libstdc++.so
    Update LD_LIBRARY_PATH
    You may need to add the LD path, for example like this:
    
      $ edit /etc/profile
      ... add these lines...
      LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib32:/usr/lib32
      export LD_LIBRARY_PATH
    To compile with gcc
    To compile things with gcc, you need to add the flag -m32 like this:
    
      gcc -m32 myfile.c
    

      

  • 相关阅读:
    回文字符串系列问题
    找两个数组的重合数字系列
    IPC最快的方式----共享内存(shared memory)
    【经典算法】——KMP,深入讲解next数组的求解
    关于SqlDateTime溢出的问题
    git操作之常见问题解决方案
    Javascript中length属性的总结
    从零开始学node(一): nodejs开发环境的配置
    使用Number.parseFloat引发的悲剧
    超链接的那些事(三): 属性target
  • 原文地址:https://www.cnblogs.com/bleachli/p/12780848.html
Copyright © 2011-2022 走看看