改变哪个libc.so被链接?

问题描述 投票:0回答:2

我试图在我的路由器上交叉编译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?

c gcc mips ld
2个回答
0
投票

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

然后你需要-I包括gcc标题等,正如讨论的here.


0
投票

弄清楚了。不得不使用buildroot构建一个uClibc工具链。

© www.soinside.com 2019 - 2024. All rights reserved.