改变哪个libc.so被链接?

时间:2017-12-23 23:23:20

标签: c gcc mips ld

我试图在我的路由器上交叉编译MIPSEL。我有一些东西在汇编工作,但现在我开始尝试编译基本的C代码。

目前只有简单的hello world c代码,并使用mipsel-linux-gnu-gcc编译器,它适用于汇编。

编译器命令:

 mipsel-linux-gnu-gcc  -L/home/uname/devel/extr/squashfs-root/lib -l:libc.so.0 -mips32 -Wl,--build-id=none -Wl,--dynamic-linker=/lib/ld-uClibc.so.0  ma.c

从路由器的固件中提取libc.so.0。

该程序编译,但在readelf中,问题是它链接到libc.so.6

 0x00000001 (NEEDED)                     Shared library: [libc.so.6]

从固件中拉出busybox二进制文件并在其上运行readelf

0x00000001 (NEEDED)                     Shared library: [libc.so.0]

如何让它链接到libc.so.0?

2 个答案:

答案 0 :(得分:0)

看起来你需要否定标准的glibc路径,因为编译器首先检查它。这可以通过使用-nostdinc进行编译来完成。

然后,您需要-I包含gcc标题等,正如所讨论的那样here.

答案 1 :(得分:0)

想出来。不得不使用buildroot构建一个uClibc工具链。