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*库文件。
/lib64/ld-linux-x86-64.so.2 (0x00007fd40df58000)
版权声明:本文博客原创文章。博客,未经同意,不得转载。