在64位的Linux下,gcc 编译 32 位程序需要添加参数 -m32 ,ld需要添加参数是 -m elf_i386。
1、Along with the -m32 flag in gcc, you may need to include the -melf_i386 flag for ld to properly link the 32bit object files to the 32bit libraries if you have both the 32bit and 64bit libraries.
2、 ld命令 ld命令是GNU的连接器,将目标文件连接为可执行程序。
3、举例:
gcc -m32 -o hello hello.c
gcc -m32 -c hello.o hello.c
ld -m elf_i386 -o kernel main.o hello.o
B. 命令提示符编译的程序是只能是32位吗
64位库只能生成64位的程序,32位的库只能生成32位的程序,32位的程序可以在64位机子上运行,64位程序不能在32位机子上运行
C. 如何在ubuntu14.04编译运行32位程序
我的解决方法
安装系统:
Install ubuntu14.04-64bit(Trusty Tahr)
安装32位库:
sudo apt-get install libc6:i386
用之前的源安装ia32-libs:
sudo -i
cd /etc/apt/sources.list.d
echo "deb raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs
rm ia32-libs-raring.list
apt-get update
exit
安装gcc编译时需要的一些类库:
sudo apt-get install gcc-multilib
在gcc的时候加-m32参数 再次尝试:
make clean
make
D. 如何在Linux下用gcc将c语言文件编译成32位exe文件,且可以在Windows下运行
有方法的,不过要看你编绎出的程序需要用到多少windows的库,看看linux下有没有可以替代的,不过很多时候没有windows内核还是无法编译成功的。
方法一:安装mingw32
方法二:virtualbox安装xp的虚拟机
方法三:通过wine使用cl命令行编译
上面几个方法你可以尝试一下。
至于编辑嘛,高手一般直接就用vim,如果你觉得难用的话,可以用eclipse或者kdevelop,kdevelop有点像windows下VS,希望对你有所帮助
E. 64位win7下vs2010怎么编译出32位程序
早期在vs2008上的一个测试,希望能够帮助你
一、win32改为x64编译
我采用了vs2008平台,以下都是基于此平台将win32编译改为x64编译
这里以Debug模式为例,起初为Win32平台,要改成x64,如果有可直接选择,否则需要新建,之后为。
然后打开vs的项目->属性->配置属性->连接器,
在“高级”选项中,目标计算机为MachineX64(/MACHINE:X64)。
在“命令行”选项中,将X86改为X64.
平台选择x64,若没有则新建之.
F. 64位UBUNTU 下 如何用GCC 编译出32位程序 求前辈指点
目测是32位的搜索路径下没有sys/cdefs.h
一般64位系统最好不要安装32位库的-dev,经常有冲突,强行安装会破坏64位环境,头文件并不像共享库分得那么完美。
我觉得比较好的做法是,重新把某一个文件夹当成rootfs,在里面安装各种32位的库和库-dev,然后给gcc传递参数"--sysroot=路径"就可以让gcc重新选取那个文件夹为rootfs,而不再认为/为rootfs。其实这样就变成交叉编译了。也可以在这个rootfs中安装32位的必要软件包如bash,gcc,coreutils等等,然后chroot进去就变成host编译了。其实有个比较简单的方法,就是虚拟机下安一个32位的ubuntu,然后装好各种软件包,然后直接对/打包,再拿出来解压就是rootfs了,后面最多就是缺啥安啥,工作量比较小。当然如果你不在意编译速度,直接虚拟机下编最简单
G. C#net如何给程序编译为32位应用程序
如果想安装方便需要使用access或sqlite这样的自包含数据库,这样你的数据库和exe程序放在同一个目录下就可以了。
如果你想使用mysql或mssql等数据库,首先要在被安装的机器上安装这些软件,然后初始化数据库结构,导入初识数据,这样的数据库做起来比较麻烦。
H. 64位linux下的GCC如何编译出一个32位可执行程序
理论上安装支持环境,之后 64 位的 gcc 编译成 32 位程序,就加 -m32 参数即可。
当然还一个办法是装个 32 位的 gcc 。
另外,交叉编译也适用于 x86 架构。
不过这么编译经常会出现各种问题,所以编译 32 位的程序,最好还是用 32 位系统。
不一定重装,用 chroot 和 setarch 命令配合即可弄出一个 32 位的子系统。
I. 64位linux编译32位应用程序,怎样设置
安装gcc 安装gcc-multlib
编译的时候加参数 -m32
其他依赖库可以安装。
此外可以使用容器技术,chroot技术,交叉编译。
使用虚拟机也是可以的,有性能损失,可能会引入一些错误。