当前位置:首页 » 编程软件 » gcc编译so32位数不兼容

gcc编译so32位数不兼容

发布时间: 2023-08-28 22:36:58

编译64位程序无法使用32位编译的lib么

编译64位程序,不一定要编译机器是64位的,但是32位机器默认安装的gcc编译环境还是不能用来编译64位程序。编译64位程序,需要加上-m64编译器参数,默认安装的gcc已经支持该参数,但是缺少64位机器指令相关的文件,所以不能编译,会出现下面的错误 In file included from /usr/include/features.h:378, from /usr/include/assert.h:37, from ../../../include/tinyxml/tinystr.h:42, from ../../../src/tinyxml/tinystr.cpp:32: /usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 没有那个文件或目录这时候需要安装 gcc所有支持文件 sudo apt-get install gcc-multilib 将会安装下列额外的软件包: cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.4-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64 libgcc1 libgomp1 libstdc++6 libstdc++6-4.4-dev 建议安装的软件包: gcc-4.4-locales g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg libmudflap0-4.4-dev libgcc1-dbg libgomp1-dbg libmudflap0-dbg libcloog-ppl0 libppl-c2 libppl7 lib64mudflap0 libstdc++6-4.4-doc 下列【新】软件包将被安装: gcc-4.4-multilib gcc-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64下列软件包将被升级:

Ⅱ 64位linux编译32位程序

这个比较麻烦。
首先你要装好全套的 32 位对应的开发编译支持环境和对应的运行环境,之后还要设置你这个软件编译时用 32 位的参数和 32 位的编译器。

你这个其实等同于交叉编译。

Ⅲ gcc g++ 使用哪些编译选项可以让编译出来的程序兼容32位和64位

用32位的gcc,编译出来后,能在32位上运行,也能在64位上兼容。

Ⅳ 如何在Linux下用gcc将c语言文件编译成32位exe文件,且可以在Windows下运行

有方法的,不过要看你编绎出的程序需要用到多少windows的库,看看linux下有没有可以替代的,不过很多时候没有windows内核还是无法编译成功的。
方法一:安装mingw32
方法二:virtualbox安装xp的虚拟机
方法三:通过wine使用cl命令行编译
上面几个方法你可以尝试一下。
至于编辑嘛,高手一般直接就用vim,如果你觉得难用的话,可以用eclipse或者kdevelop,kdevelop有点像windows下VS,希望对你有所帮助

Ⅳ 编译uboot时出现/bin/sh: 1: /opt/buildroot-gcc342/bin/mipsel-linux-as: not found

这个错误应该是告诉你,你的编译器没找到。你去确认下这个目录存不存雀中在:
/opt/buildroot-gcc342/bin/mipsel-linux-as
如果不存在,那肯定是编译器没安装。
如果存在,我看网上有人在说:是因为系统是64位的,而编译禅早器是32位的,不兼容。你换个32位系统贺岁雀试试。

Ⅵ 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了,后面最多就是缺啥安啥,工作量比较小。当然如果你不在意编译速度,直接虚拟机下编最简单

Ⅶ 在编译的时候出现这个问题在网上找了要在gcc后面加上-m32但还是不行求解答!

加-m32后要保证所有的引用都必须是32位的,并且所有编译过的程序需要清空并重新编译。

Ⅷ linux64位机器编译32位程序出现错误。

32 和 64 是完全两个不同的系统。Linux 他们的兼容,完全是基于内核的双模式切换功能,但是因为是基于内核的。所以 32 和 64 的系统函数库就还是没关系。
那么,你编译和运行 32 位程序,就需要 64 位的函数库接口支撑。同样 64 位程序,也需要 64 位的函数库提供支撑。

你这个问题,教程只让你装了最基本的编译器环境,但是函数支撑环境全都没有装,肯定是还会提示找不到需要的函数库的。
另外,就算你这个命令装了需要的函数库,也肯定只是装了 64 位的函数库,32 位库也没有装。那么编译 32 位程序也会出现找不到 32 位函数库的问题的。

你这个问题,我建议你学习两部分:
1、Linux 的依赖关系;
2、Linux 的 mutilib 相关实现。

我建议,编译 32 的程序请用纯 32 位系统。64 位系统只编译 64 位的程序。64 位系统只可以运行 32 位程序,不要用来编译。Linux 里面随便找个程序,就会依赖很多的函数库,这对于编译器调用来说,会很乱的。
如果真的没有空闲机器去单独跑 32 位系统了,我建议要么是 chroot 环境,要么是用交叉编译。不过注意这两种方式还是需要设置。

Ⅸ 64位的电脑装32位的ubuntu,gcc编译结果和正常32位的电脑会不会不一样

不会啊,编译结果是正常32位的

热点内容
c和php 发布:2024-11-20 16:01:17 浏览:36
内置存储卡数据更新系统 发布:2024-11-20 15:30:16 浏览:449
医保卡支付密码在哪里可以修改 发布:2024-11-20 15:27:51 浏览:24
java如何删除文件夹 发布:2024-11-20 15:24:40 浏览:386
温十系统配置怎么找到 发布:2024-11-20 15:22:15 浏览:255
centos解压zip 发布:2024-11-20 15:09:52 浏览:145
ftp软件的使用 发布:2024-11-20 14:53:21 浏览:611
手机看wifi密码怎么看 发布:2024-11-20 14:32:39 浏览:794
l2级别安全配置都有哪些配置 发布:2024-11-20 14:31:02 浏览:774
明日之后服务器怎么那么多 发布:2024-11-20 14:29:59 浏览:144