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. 学习笔记 一步步了解webpack

    前言 demo 地址: https://github.com/yy8597/webpack-demos 之前学习了 broswerify,发现确实很好用.虽然没有 grunt 那样丰富的配置和插件,但 ...

  2. HDU 1195 Open the Lock (双宽搜索)

    意甲冠军:给你一个初始4数字和目标4数字,当被问及最初的目标转换为数字后,. 变换规则:每一个数字能够加1(9+1=1)或减1(1-1=9),或交换相邻的数字(最左和最右不是相邻的). 双向广搜:分别 ...

  3. Windows下一个SlikSVN使用

    我相信所有的应SVN不熟悉.使用过.可是并非人人都自己配置过SVNserver.以下就是我配置SVNserver的步骤.以及在配置过程中碰见的一些问题,在此记录,希望对你有所帮助. 安装 双击执行&q ...

  4. matlab简单实现SVD的推荐

    %svd chengxu A = [5 5 0 5;5 0 3 4; 3 4 0 3; 0 0 5 3; 5 4 4 5; 5 4 5 5]; A = A'; [U S V] = svd(A); U ...

  5. 使 IIS 6.0 可以在 64 位 Windows 上运行 32 位应用程序 试图加载格式不正确的程序。

    原文 使 IIS 6.0 可以在 64 位 Windows 上运行 32 位应用程序 试图加载格式不正确的程序. win7 64位操作系统上边运行IIS网站应用的时候,提示错误"试图加载格式 ...

  6. STL algorithm算法min,min_element(35)

    min样板: std::min C++98 C++11 C++14 default (1) template <class T> const T& min (const T& ...

  7. Js 正则表达式 写了一个正整数或小数点或分数前两个正则表达式

    写了一个正整数或小数点或分数前两个正则表达式 /^[0-9]+([.]{1}[0-9]{1,2})? $/ 版权声明:本文博客原创文章.博客,未经同意,不得转载.

  8. 【Android】九宫格实现

    第一步,布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  9. PHP图片等比缩放,并添加Logo水印特定代码和盯

    <? php //PHP图片等比缩放,并添加Logo水印 --->百度 "美日汇" /** * 等比缩放函数(以保存的方式实现) * @param string $pi ...

  10. GeeksforGeeks - Adjacency List邻接矩阵C\C++代码

    邻接矩阵的图示: 构建一个这种无向邻接矩阵. 參考站点: http://www.geeksforgeeks.org/graph-and-its-representations/ 这里写了个类,添加删除 ...