How to link to a different libc file?
c, gcc, ld, libc, linker
Solution
I found out how to do it:
rpath specifies where the provided libraries are located. This folder should contain: `libc.so.6`, `libdl.so.2`, `libgcc_s.so.1` and maybe more. Check with strace to find out which libraries your binary file uses.
`ld.so` is the provided linker
`gcc -Xlinker -rpath=/default/path/to/libraries -Xlinker -I/default/path/to/libraries/ld.so program.c`
Problem
I want to supply the shared libraries along with my program rather than using the target system's due to version differences. `ldd` says my program uses these shared libs: ``` 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)** ``` I have successfully linked ld-xxx.so by compiling with: ``` gcc -std=c99 -D_POSIX_C_SOURCE=200112L -O2 -m32 -s -Wl,-dynamic-linker,ld-2.7.so myprogram.c ``` But I have not managed to successful link `libc-xxx.so`. How can I do that ?