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. Android开发自学笔记(基于Android Studio1.3.1)—1.环境搭建(转)

    一.引言    本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于Intelli ...

  2. Install shipyard

    2台机器,192.168.1.153,192.168.1.154 安装Shipyard 1. 154作为集群主节点,在154机器上执行命令 curl -sSL https://shipyard-pro ...

  3. mvc与My97DatePicker插件的结合

    Razor视图引擎与My97DatePicker插件的结合 1 using System; 2 using System.Collections.Generic; 3 using System.Run ...

  4. 通达OA web页面与精灵显示内容更新后不一致的问题

    前一段就发现有这种问题.就是在开发的电话查询里更新的信息,可是在精灵对话窗体上显示的还是原来的信息.这样导致从新开发入口更新信息就不能使用.一開始还以为是厂家升级,变更了存储的表结构.感觉下载近期的升 ...

  5. ssh配置连接

    SSH构造: 1.改动vi /etc/ssh/sshd_config,依据模板将要改动的參数凝视去掉并改动參数值: Port 22 指定SSH连接的port号,安全方面不建议使用默认22port Pr ...

  6. don't touch your phone in any unfamiliar way(转)

    直到这两天 Chainfire 说,他正尝试在不修改手机 /System 分区的情况下获取 Android 系统 Root 权限,我才想起他在今年 9 月轻描淡写地提到自己已经把 SuperSU 卖给 ...

  7. ORACLE在表中添加的目光凝视和读取列

    在ORACLE中给表.列添加凝视以及读取凝视 1.给表填加凝视:SQL>comment on table 表名 is '表凝视"; 2.给列加凝视:SQL>comment on ...

  8. [2013山东ACM]省赛 The number of steps (可能DP,数学期望)

    The number of steps nid=24#time" style="padding-bottom:0px; margin:0px; padding-left:0px; ...

  9. XStream 用法汇总

            XStream是一家Java对象和XML转换工具,很好很强大.它提供了所有的基本型.排列.收集和其他类型的支持,直接转换.因此XML在数据交换经常使用.对象序列化(和Java对象的序列 ...

  10. Access Toke调用受保护的API

    ASP.NET Web API与Owin OAuth:使用Access Toke调用受保护的API 在前一篇博文中,我们使用OAuth的Client Credential Grant授权方式,在服务端 ...