致命错误:gnustubs-32.h:没有那个文件或目录; cannot find -lgcc

    xiaoxiao2025-03-05  30

    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  

     

     

    最新回复(0)