centos 7 结构体gcc 32位编译环境





1介绍



1.1背景

学习新 C++ 2011和C11标准。



1.2使用软件

CentOS 7(Linux version 3.10.0-123.el7.x86_64)

gcc version 4.8.2 20140120 (Red Hat 4.8.2-16)



1.3本次配置

32位gcc 开发环境。

由于 RHEL 7(红帽企业版 linux 7)已经不再提供32位版本号,短期内 CentOS 7也不会提供32位的版本号,故为了考虑升级和研究可用的操作系统,对开放环境进行配置。

64位版本号的CentOS 7眼下仅仅提供了GCC 4.8.2 64位版本号。默认不安装 GLIBC(version 2.17) 32位版本号。

1.4目的

构造CentOs 64位版本号下的 GCC 4.8.2 支持编译和执行32位程序。新标准编译环境。



2安装步骤

2.1安装GLIBC(32位)

安装 GLIBC 32位版本号。

yum --disablerepo=* --enablerepo=c6-media install glibc-2.17-55.el7.i686



2.2安装 gcc 4.8.2

安装完整的 gcc 4.8.2。

2.3拷贝执行库libgcc_s.so

如果 GCC 4.8.2 安装到/usr/local/gcc-4.8.2。须要把32位版本号的libgcc_s.so复制到32位库

/lib 以下。

cp /usr/local/gcc-4.8.2/lib/libgcc* /lib



2.4验证安装(C11)

[root@localhost src]# cat aa.c



#include <stdio.h>

#include <pthread.h>



//gcc -m32 -g -std=c11 aa.c -o aa -lpthread;./aa



void * f(void *data)

{

        //char buff[10];

        //char * p = 0;

        //memcpy(buff,"ddddddddddddddd",20);

        //memcpy(p,"sss",10);

        //p[0] = 'd';

        printf("centos 7,gcc 4.8.2 C11 test ok.\n");

        return 0;

}



int main(int argc,char * argv[])

{

        pthread_t t;

        pthread_create(&t,0,f,0);

        pthread_join(t,0);

        return 0;

}



gcc -m32 -g -std=c11 aa.c -o aa -lpthread;./aa;ldd aa

centos 7,gcc 4.8.2 C11 test ok.

        linux-gate.so.1 =>  (0xf77bb000)

        libpthread.so.0 => /lib/libpthread.so.0 (0xf7799000)

        libc.so.6 => /lib/libc.so.6 (0xf75db000)

/lib/ld-linux.so.2 (0xf77bc000)

实际上,看到编译出来的程序。并不须要链接libgcc_s.so.*,而仅仅须要 GLBC 的执行库,从ldd 查看应用程序链接的动态库能够明白看出来。应该是 GCC 须要上诉库,实际上是GCC套件的ld程序须要libgcc_s.so*库文件。

2.5验证安装(C++ 2011)

[root@localhost src]# cat aa.cpp  



#include <stdio.h>

#include <thread>

#include <functional>

#include <algorithm>

using namespace std::placeholders;

using namespace std;



//g++ -std=c++11 -g aa.cpp -o aa -lpthread;./aa



void * f(void *data)

{

        printf("centos 7,gcc 4.8.2 c++ 2011 test ok.\n");

        return 0;

}



int main(int argc,char * argv[])

{

        void *p;

        //std::function<void * (void *)> pf = std::bind(f,nullptr);

        auto pf = std::bind(f,nullptr);

        std::thread t(pf);

        //t.start();

        t.join();

        return 0;

}



[root@localhost src]# g++ -std=c++11 -g aa.cpp -o aa -lpthread;./aa;ldd aa

centos 7,gcc 4.8.2 c++ 2011 test ok.

        linux-vdso.so.1 =>  (0x00007fffe7d6c000)

        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd40dd34000)

        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fd40da2d000)

        libm.so.6 => /lib64/libm.so.6 (0x00007fd40d72a000)

        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fd40d514000)

        libc.so.6 => /lib64/libc.so.6 (0x00007fd40d153000)

/lib64/ld-linux-x86-64.so.2 (0x00007fd40df58000)

版权声明:本文博客原创文章。博客,未经同意,不得转载。

CentOS 7 结构体GCC 4.8.2 32位编译环境的更多相关文章

  1. 64位CentOS安装32位开发环境编译Nachos

    参考http://stackoverflow.com/questions/7412548/gnu-stubs-32-h-no-such-file-or-directory 1.On CentOS 5. ...

  2. window安装gcc、g++、make等编译环境

    1. MinGW官网下载:http://www.mingw.org        点击右上角Downloads 点击下载 mingw-get-setup.exe 2. 百度网盘(2019年4月从官网下 ...

  3. centos 6.5 32位 编译安装Mysql

    groupadd mysql #添加mysql组 useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统 ...

  4. C++结构体中sizeof(1)

    sizeof sizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节. 返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标准库的 ...

  5. 失落的C语言结构体封装艺术

    Eric S. Raymond <esr@thyrsus.com> 目录 1. 谁该阅读这篇文章 2. 我为什么写这篇文章 3.对齐要求 4.填充 5.结构体对齐及填充 6.结构体重排序 ...

  6. (转)失落的C语言结构体封装艺术

    目录1. 谁该阅读这篇文章 2. 我为什么写这篇文章 3.对齐要求 4.填充 5.结构体对齐及填充 6.结构体重排序 7.难以处理的标量的情况 8.可读性和缓存局部性 9.其他封装的技术 10.工具 ...

  7. C语言如何定义结构体

    原文地址 1. struct与typedef struct区别 struct是结构体的关键字,用来声明结构体变量如 struct  student {   char  num[10];      ch ...

  8. 结构体的数据对齐 #pragma浅谈

    之前若是有人拿个结构体或者联合体问我这个结构占用了多少字节的内存,我一定觉得这个人有点low, 直到某某公司的一个实习招聘模拟题的出现,让我不得不重新审视这个问题, 该问题大致如下: typedef ...

  9. Go第六篇之结构体剖析

    Go 语言通过用自定义的方式形成新的类型,结构体是类型中带有成员的复合类型.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. Go 语言中的类型可以被实例化,使用new或&a ...

随机推荐

  1. atitit.无线上网卡 无法搜索WiFi 解决无线路由器信号不能被连接

    atitit.无线上网卡 无法搜索WiFi 解决无线路由器信号不能被连接 #---现象 pc机无线网卡无法搜索到无线路由器的信号.. 但是,笔记本电脑和手机能够... 只要pc机无线网卡可以搜索信号, ...

  2. cocos2d-x3.0 解释具体的新的物理引擎setCategoryBitmask()、setContactTestBitmask()、setCollisionBitmask()

    转载请注明出处:游戏开发实验室http://blog.csdn.net/u010019717/article/details/32942641 我在编写游戏的时候遇到了这个问题.  物理引擎其它的内容 ...

  3. SQL Server创建索引

    原文:SQL Server创建索引 什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的 ...

  4. SQLServer 2012异常问题(二)--由安装介质引发性能问题

    原文:SQLServer 2012异常问题(二)--由安装介质引发性能问题 问题描述:生产环境一个数据库从SQLSERVER 2008 R2升级到SQLSERVER 2012 ,同时更换硬件,但迁移后 ...

  5. Hadoop之——HBase注意事项

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46447573 1.HBase(NoSQL)的数据模型 1.1 表(table) 存 ...

  6. Thinking in UML 学习笔记(四)——UML活动图来看核心

    在UML活动图的性质是一个流程图,它需要描述为完成活动的特定目标的描述来完成,这些交互运行顺序. UML有两个级别的活动图,的用例场景的叙述性描述,还有的对象用来描述交互的描述. 工具.它不是我们的分 ...

  7. Firefox firebug and xpath checker

    From http://blog.sina.com.cn/s/blog_5aefba9a0100csy8.html

  8. HDU 5037 FROG (贪婪)

    Problem Description Once upon a time, there is a little frog called Matt. One day, he came to a rive ...

  9. Spring学习使用标签来标记资源(@Component、@Repository、 @Service和@Controller)和用法(包括如何jsp正在使用)

    首先,在xml其中新增部分标有下划线的文件,容器初始化的时候需要扫描包 注意: a.     包款扫描(下划线部分)一定要加,默认是不扫描整个包.与每一包之间','开.如过具有同样的父包,那么我们能够 ...

  10. 清理收缩VMware虚拟机MacOS系统的vmdk文件大小

    屌丝行和差的主要标准,尽管持续性眼贪婪mbp.但是,从另一方面限制患有米,只是在虚拟机中播放MacOS.(我不会告诉你我的笔记本i5+120SSD+500HHD+12G内存,跑MacOS虚拟机一点不卡 ...