如何链接到其他libc文件?

Nee*_*ran 9 c linker gcc libc ld

我想提供共享库以及我的程序,而不是由于版本差异而使用目标系统.

ldd 说我的程序使用这些共享库:

linux-gate.so.1 =>  (0xf7ef0000)**(made by kernel)**  
libc.so.6 => /lib32/libc.so.6 (0xf7d88000)**(libc-2.7.so)**  
/lib/ld-linux.so.2 (0xf7ef1000)**(ld-2.7.so)**
Run Code Online (Sandbox Code Playgroud)

我通过编译成功链接了ld-xxx.so:

gcc -std=c99 -D_POSIX_C_SOURCE=200112L -O2 -m32 -s -Wl,-dynamic-linker,ld-2.7.so myprogram.c
Run Code Online (Sandbox Code Playgroud)

但我没有成功的链接libc-xxx.so.我怎样才能做到这一点 ?

Nee*_*ran 12

我发现了怎么做:

rpath指定提供的库所在的位置.此文件夹应包含:libc.so.6,libdl.so.2,libgcc_s.so.1和也许更多.检查strace以找出二进制文件使用的库.

ld.so 是提供的链接器

gcc -Xlinker -rpath=/default/path/to/libraries -Xlinker -I/default/path/to/libraries/ld.so program.c


Ign*_*ams 7

传递-nodefaultlibs-nostdlib以GCC将告诉它不通过默认库作为参数传递给ld.然后,您将能够显式指定要链接的libc.gcc(1)有关这两个选项的更多详细信息和警告,请参见手册页.

  • 注意这篇文章是错误的.您不需要传递任何这两个标志. (3认同)