OpenEuler gcc生成32位程序

摘要:
OpenEulergcc生成32位程序的问题由于编程需要,现在需要在64位OpenEuler操作系统下生成32位的程序。OpenEuler的软件包中没有提供gcc multilib的安装。
OpenEuler gcc生成32位程序

问题

由于编程需要,现需在 64位 OpenEuler 操作系统下,生成32位程序。

OpenEuler gcc生成32位程序第1张

OpenEuler的软件包中没有提供 gcc-multilib 的安装。

检查 cd /usr/include/gnu/

OpenEuler gcc生成32位程序第2张

缺少 stubs-32.h

解决

1.在ubuntu中安装 multilib

Ubuntu 中可以直接通过 apt install gcc-multilib

OpenEuler gcc生成32位程序第3张

2.将 缺少的头文件 复制到openeuler中

OpenEuler gcc生成32位程序第4张

此时再次 编译32位文件会出现

OpenEuler gcc生成32位程序第5张

提示缺少crtn.ocrt1.ocrti.o-lgcc-lgcc_s-lc

也就是 libgcc.alibgcc_s.so 这两个文件存在差异

OpenEuler gcc生成32位程序第6张

检查/usr/lib/gcc/x86_64-linux-gnu/7.3.0/果然如此

3.将 以上文件 从 ubuntu 复制到 openeuler中

OpenEuler gcc生成32位程序第7张

找到 crtn.ocrt1.ocrti.o 文件路径

crtn.ocrt1.ocrti.o 从 ubuntu 复制到 openeuler中

OpenEuler gcc生成32位程序第8张

替换 libgcc.alibgcc_s.so (须保持gcc版本相同,注意备份)

此方法比较麻烦复杂且改写libgcc文件时可能引起其他错误(不推荐使用)

方法二

1.在官网下载multilib包

x86架构:

地址:https://packages.debian.org/sid/i386/gcc-multilib/download

OpenEuler gcc生成32位程序第9张

amd64架构:

地址:https://packages.debian.org/sid/amd64/gcc-multilib/download

OpenEuler gcc生成32位程序第10张

选择任意链接保存即可

2.在openeuler上安装dpkg包管理工具

OpenEuler gcc生成32位程序第11张

3.使用dpkg安装gcc-multilib

ps:此方法适用于有对应gcc版本情况

方法三

源码编译gcc时 选项配置 enable 32 位编译选项

免责声明:文章转载自《OpenEuler gcc生成32位程序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ES6-10笔记(class类)“简单form表单全代码”引发JSON.stringify()问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux编程头文件所在路径的问题

一、问题引入 1、头文件与库       当我们在PC主机linux环境下(如ubuntu),编写linux应用程序,然后利用gcc来编译。在源代码的开始位置会写入头文件,那是因为我们使用了系统提供的库函数,例如printf、open、read、write等等。我们会写入类似的内容: #include <stdio.h> #include &...

Linux下的主要的C语言编译器

1.GCC大名鼎鼎的GNU的C/C++/Obj-C编译器,当前版本是2.8.1,但据说与2.7.*有兼容性问题. 而使用较广的是gcc2.7.2系列,如RedHat5中带的就是gcc2.7.2.3有时候在Cyrix上用gcc会有些问题,因此有一套针对Cyrix特点的gcc2.7.2.3我这里有RedHat5的rpm ftp://166.111.68.98/...

Centos6.5安装nodejs13

下载nodejs13二进制压缩包,解压后运行./node提示缺库文件。在网上面试并试了好多次后,记录一下。 缺失库文件的错误提示:   [root@localhost bin]# ./node   ./node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (req...

CentOS安装Redis 6.0.9

什么是Redis? Redis通常被称为数据结构服务器。这意味着Redis通过一组命令提供对可变数据结构的访问,这些命令是使用带有TCP套接字和简单协议的服务器-客户端模型发送的。因此,不同的进程可以以共享的方式查询和修改相同的数据结构。 在Redis中实现的数据结构具有一些特殊属性: 即使始终为它们提供服务并将它们修改到服务器内存中,Redis也会将...

Ubuntu搭建嵌入式开发(交叉编译)环境

大家都比较熟悉gcc编译家族了,但是交叉编译到arm平台的代码是不直接使用gcc的,需要类似名字的一个程序。 1、首先写一个简单的c程序,helloArm.c, 如下: 1 /* 2 * ==================================================================================...

C++雾中风景番外篇4:GCC升级二三事

最近将手头上负责的项目代码从GCC 4.8.2升级到了GCC 8.2。(终于可以使用C++17了,想想后续的开发也是很美好啊~~)不过这个过程之中也遇到了一些稀奇古怪的问题,在这里做一个简单的记录,希望后续有同学遇到类似的问题能作为参考。 1. error: unable to find string literal operator 'operator"...