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