致命错误:gnu/stubs-32.h:没有那个文件或目录; cannot find -lgcc_s;

1.

centos64位编译32位代码,出现/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录,需要安装32位的glibc库文件。

           安装32位glibc库文件命令:

           sudo yum install glibc-devel.i686(安装C库文件)

           sudo dnf install glibc-devel.i686(fedora命令)

          安装32位glibc++库文件命令 

         sudo  yum install libstdc++-devel.i686

         sudo dnf install libstdc++-devel.i686(fedora命令)

 

 

2.

在学习gcc静态库动态库编译的时候选用静态库编译时出错显示:/usr/lib/ld:cannot find -lc

百度:/usr/lib/ld:cannot find -lc多处给的解决方案为:

然而并不能解决问题,最终定位发现是静态编译的问题。而且不止会出现这种情况:

/usr/lib/ld:cannot find -lc

/usr/lib/ld:cannot find -lgcc_s

/usr/lib/ld:cannot find -lm

等的错误,主要原因在静态编译时需要链接静调库。如上命令:

[xiaohexiansheng@centos6 app]$ gcc -static -I./libs main.c -o app -L./libs -lcrypto -lfunc

如果在编译时去掉-static选项选用动态库编译则不会出现此种情况

[xiaohexiansheng@centos6 app]$ gcc -I./libs main.c -o app -L./libs -lcrypto -lfunc
[xiaohexiansheng@centos6 app]$ ls
app  libs  main.c

非静态编译时ldd filename,显示如下,这是可执行程序所需的动态库,运行可执行程序时需要的动态库。

[xiaohexiansheng@centos6 app]$ ldd app
        linux-gate.so.1 =>  (0x004ad000)
        libcrypto.so => /usr/lib/libcrypto.so (0x03ad9000)
        libfunc.so => not found
        libc.so.6 => /lib/libc.so.6 (0x0052a000)
        libdl.so.2 => /lib/libdl.so.2 (0x0070c000)
        libz.so.1 => /lib/libz.so.1 (0x00713000)
        /lib/ld-linux.so.2 (0x00508000)

静态编译时需要将所有的.a库链接到可执行文件中,所以需要libc静态库文件,在系统找查找glibc-static提示没有库文件。

#yum install glibc-static安装静态库。

 


3.

[tian@lixixi demo]$ gcc -m32 str.c -o app 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.5/libgcc_s.so when s 
earching for -lgcc_s/usr/bin/ld: cannot find -lgcc_s 
collect2: error: ld returned 1 exit status

这个是由于没有32位的对应安装包

[tian@lixixi demo]$ yum search libgcc 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
=================================== N/S matched: libgcc ==================================== 
libgcc.i686 : GCC version 4.8 shared support library 
libgcc.x86_64 : GCC version 4.8 shared support library

Name and summary matches only, use “search all” for everything.

我这个错误执行以下命令即可: 
[root@lixixi ~]# yum install libgcc.i686
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值