相关疑难解决方法(0)

如何使用自定义版本的glibc和静态链接构建C程序?

我已经构建了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)

我究竟做错了什么?

c glibc ld static-linking

21
推荐指数
3
解决办法
1万
查看次数

libgcc.a和libgcc_s.a之间的区别?

我们已经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机器吗?

c aix gcc

9
推荐指数
1
解决办法
5482
查看次数

即使在Ubuntu 12.10上libgcc_s.so链接未损坏,ld也找不到lgcc_s

我现在面临一个问题,编译与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)

gcc static-linking ubuntu-12.10

2
推荐指数
1
解决办法
9176
查看次数

标签 统计

c ×2

gcc ×2

static-linking ×2

aix ×1

glibc ×1

ld ×1

ubuntu-12.10 ×1