zdly.net
当前位置:首页 >> linux64位机器编译32位程序出现错误。 >>

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

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

在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

你的源配置中,应该添加multilib的支持还有编译的时候,你检查下编译选项中,是否禁止了multilib, --disable-multilib

理论上安装支持环境,之后 64 位的 gcc 编译成 32 位程序,就加 -m32 参数即可. 当然还一个办法是装个 32 位的 gcc . 另外,交叉编译也适用于 x86 架构. 不过这么编译经常会出现各种问题,所以编译 32 位的程序,最好还是用 32 位系统. 不一

编译64位程序,不一定要编译机器是64位的,但是32位机器默认安装的gcc编译环境还是不能用来编译64位程序.编译64位程序,需要加上-m64编译器参数,默认安装的gcc已经支持该参数

哈哈 64位系统下编译出来的程序肯定能在32位系统运行啦64位和32位的硬件驱动程序完全不能混用,就这么个区别.一般的软件程序则没什么大的问题.在64位Windows XP中,只有16位应用程序是完全无法使用的,而32位应用程序则可以继续使用.不过在安装这些应用程序的时候也要注意,有些应用程序,虽然和硬件扯不上关系,但是为了实现软件的某些特殊功能,安装软件的时候同时还会向系统中装入驱动程序,这种程序在没有发布64位版之前是无法在64位Windows下使用的.

使用下面两条命令编译setarch i386 ./configure --prefix=/usr linux-generic32 -m32 sharedmake在编译过程中可能会碰到错误输出,可能是有些依赖库找不到需要把输出粘出来看看.另外,提问最好说明你的linux是什么发布版,这样其它人好提供更准确的命令.

目测是32位的搜索路径下没有sys/cdefs.h一般64位系统最好不要安装32位库的-dev,经常有冲突,强行安装会破坏64位环境,头文件并不像共享库分得那么完美.我觉得比较好的做法是,重新把某一个文件夹当成rootfs,在里面安装各种32位的

Code::Blocks下用Visual C++2005的编译器编译能到别人机器运行,那就说明编译器没问题,只可能是编译选项的问题.一般我遇到的最多的就是manifest相关的,如果manifest里面指定了程序依赖64位库,那就会出现配置不正确的错误. 你可以试一下在编译选项里面的C/C++运行时库选择为-MT,可能能解决.

英文意思是 访问一个腐化的共享库大至意思就说.此程序不支持或缺少某些文件,导致无法运行

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.zdly.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com