我在使用 Ubuntu 12.10 上为编译器启用标志和为链接器启用标志进行编译时gcc
遇到问题。但是应用程序可以通过动态链接构建良好(不使用这些标志)。-static
-static-libgcc
-Wl,-static
/usr/bin/ld: cannot find -lgcc_s
/usr/lib/gcc/i686-linux-gnu/x.x/libgcc_s.so
在查看了互联网上的建议后,我发现大部分时间都是从to
链接断开的问题/lib/libgcc_s.so.1
。但在我的情况下/usr/lib/gcc/i686-linux-gnu/4.7/libgcc_s.so
是指向/lib/i386-linux-gnu/libgcc_s.so.1
哪个确实存在。
$ ls -l /usr/lib/gcc/i686-linux-gnu/4.7/libgcc_s.so
lrwxrwxrwx 1 root root 33 Sep 21 2012 /usr/lib/gcc/i686-linux-gnu/4.7/libgcc_s.so -> /lib/i386-linux-gnu/libgcc_s.so.1
$ ls -l /lib/i386-linux-gnu/libgcc_s.so.1
-rw-r--r-- 1 root root 116244 Sep 21 2012 /lib/i386-linux-gnu/libgcc_s.so.1
$ file /lib/i386-linux-gnu/libgcc_s.so.1
/lib/i386-linux-gnu/libgcc_s.so.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x61fa08eda0f264222649f9481f9e0340567d0862, stripped
的输出ldconfig
显示如下:
$ sudo /sbin/ldconfig -v | grep libgcc_s
/sbin/ldconfig.real: Can't stat /lib/i686-linux-gnu: No such file or directory
/sbin/ldconfig.real: Can't stat /usr/lib/i686-linux-gnu: No such file or directory
/sbin/ldconfig.real: Path `/lib/i386-linux-gnu' given more than once
/sbin/ldconfig.real: Path `/usr/lib/i386-linux-gnu' given more than once
libgcc_s.so.1 -> libgcc_s.so.1
/sbin/ldconfig.real: Cannot stat /usr/lib/i386-linux-gnu/libsoftokn3.so: No such file or directory
/sbin/ldconfig.real: Cannot stat /usr/lib/i386-linux-gnu/libnss_db.so: No such file or directory
谁能帮我用静态链接解决这个问题?如果需要任何进一步的细节,也请告诉我。谢谢。