CentOS 7 構造GCC 4.8.2 32位編譯環境

來源:互聯網
上載者:User

標籤:linux   c++2011 c11   c++   64位   centos   


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)
[[email protected] 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)
2.5驗證安裝(C++ 2011)
[[email protected] 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;
}

[[email protected] 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)




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.