C语言 无法打开ウ/lib/ld.so.1 Ж:交叉编译mips时没有这样的文件或目录

mdfafbf1  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(236)

我正在编译一些C代码,打算在MipsLinuxo32嵌入式系统上执行它。我有一些简单的C代码,

#include <stdio.h>
void main(){
    printf("Hello world");
}

并将其编译为

mips-linux-gnu-gcc -mfp32 helloworld.c

我知道我不能在我的linux机器上运行它,所以为了测试它,我首先得到了qemu,并试图用

qemu-mips ./a.out

但我收到错误

qemu-mips: Could not open '/lib/ld.so.1': No such file or directory

我怀疑这与我包含stdio.h但没有链接它的事实有关。我该如何修复这个问题。
我希望代码能够运行。

bxjv4tth

bxjv4tth1#

出现错误
无法打开“/lib/ld.so.1”:无此文件或目录
我怀疑这与我包括stdio.h但没有链接它的事实有关。
这是因为你已经编译了一个动态链接的可执行文件,你应该可以在readelf -l a.out | grep interpreter的输出中看到它,所以当你运行它的时候,QEMU需要目标动态链接器,但是它找不到,因为/lib包含了你的宿主二进制文件,里面没有ld.so.1
可以通过构建静态可执行文件(mips-linux-gnu-gcc -mfp32 -static helloworld.c)或在QEMU命令行(qemu-mips -L<path to directory with MIPS rootfs> ./a.out)中提供目标MIPS rootfs(包含lib/ld.so.1和其他所需库)的位置来修复。

相关问题