我试图在我的路由器上交叉编译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?
答案 0 :(得分:0)
看起来你需要否定标准的glibc路径,因为编译器首先检查它。这可以通过使用-nostdinc
进行编译来完成。
然后,您需要-I
包含gcc标题等,正如所讨论的那样here.
答案 1 :(得分:0)
想出来。不得不使用buildroot构建一个uClibc工具链。