如何在ubuntu14.04编译运行32位程序

如何在ubuntu14.04编译运行32位程序,第1张

我的解决方法

安装系统:

Install ubuntu1404-64bit(Trusty Tahr)

安装32位库:

sudo apt-get install libc6:i386

用之前的源安装ia32-libs:

sudo -i

cd /etc/apt/sourceslistd

echo "deb archiveubuntucom/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raringlist

apt-get update

apt-get install ia32-libs

rm ia32-libs-raringlist

apt-get update

exit

安装gcc编译时需要的一些类库:

sudo apt-get install gcc-multilib

在gcc的时候加-m32参数 再次尝试:

make clean

make

STM32的程序是运行在目标芯片是STM32单片机或者其兼容单片机上的。

2

源代码被汇编程序编译成机器语言时,不同的目标芯片有不同的编译方式。

3

所以给STM32编译的代码并不能在WIN7上运行。

4

也可以说只能在STM32芯片上运行。

理论上安装支持环境,之后 64 位的 gcc 编译成 32 位程序,就加 -m32 参数即可。

当然还一个办法是装个 32 位的 gcc 。

另外,交叉编译也适用于 x86 架构。

不过这么编译经常会出现各种问题,所以编译 32 位的程序,最好还是用 32 位系统。

不一定重装,用 chroot 和 setarch 命令配合即可弄出一个 32 位的子系统。

一般64位系统最好不要安装32位库的-dev,经常有冲突,强行安装会破坏64位环境,头文件并不像共享库分得那么完美。

我觉得比较好的做法是,重新把某一个文件夹当成rootfs,在里面安装各种32位的库和库-dev,然后给gcc传递参数"--sysroot=路径"就可以让gcc重新选取那个文件夹为rootfs,而不再认为/为rootfs。

#include <stdioh>

int main(void){

    int x=-32768;

    char c='@';

    short y=522;

    printf("%d <--> %08X\n",x,x);

    printf("%c <--> %02X\n",c,c);

    printf("%hd <--> %04X\n",y,y);

    return 0;

}

以上就是关于如何在ubuntu14.04编译运行32位程序全部的内容,包括:如何在ubuntu14.04编译运行32位程序、stm32可否运行win程序、64位linux下面的GCC如何编译出一个32位可执行程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10218307.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存