我已经构建了glibc 2.14并将其安装在目录中~/GLIBC/glibc_install.现在我想使用这个C库而不是系统的默认C库来构建和运行程序.
为了确保我使用的是自定义glibc,我添加了一个put glibc/stdio-common/printf.c:__printf来打印消息的调用.
然后我重建并重新安装了glibc.
然后我写了一个"Hello,World"程序并尝试编译并链接如下:
gcc -nodefaultlibs -static -lgcc -L~/GLIBC/glibc_install/lib -o myprog myprog.c
Run Code Online (Sandbox Code Playgroud)但是我得到以下链接器错误报告:
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start':
(.text+0x19): undefined reference to `__libc_csu_init'
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start':
(.text+0x25): undefined reference to `__libc_start_main'
/tmp/ccACTQEp.o: In function `main':
c1.c:(.text+0xa): undefined reference to `puts'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我们已经libgcc使用RPM文件在AIX 6.1上安装了GCC .
我想知道为什么"libgcc_s.a"没有在以下文件夹下创建?
/opt/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.2.0/
Run Code Online (Sandbox Code Playgroud)
libgcc.a该文件夹中有一个但没有libgcc_s.a,链接器似乎想要那个libgcc_s.a文件
我问的原因是,如果我尝试在AIX 6.1上创建一个简单的"hello world"类型的共享库,它会抱怨并且说有些像"cannot find libgcc_s.a".
我运行了一个命令:
find / -name '*libgcc*' -print 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
尝试在tha机器上找到libgcc_s.a但没有什么;-(
知道如何libgcc_s.a进入AIX机器吗?
我现在面临一个问题,编译与gcc用-static,-static-libgcc编译器启用的标志和-Wl,-static用于连接上启用的Ubuntu 12.10标志。但是应用程序通过动态链接(无需使用这些标志)可以很好地构建。
/usr/bin/ld: cannot find -lgcc_s
在查看了互联网上的建议后,我发现大部分时间都是从/usr/lib/gcc/i686-linux-gnu/x.x/libgcc_s.so到的链接断开的问题/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
Run Code Online (Sandbox Code Playgroud)
的输出ldconfig显示以下内容:
$ sudo /sbin/ldconfig -v | grep libgcc_s
/sbin/ldconfig.real: …Run Code Online (Sandbox Code Playgroud)