linux - uclinux - 与 libc.so.0 库的链接

标签 linux embedded-linux libc uclibc uclinux

我正在尝试为使用运行 uClinux 的 ARM 处理器的嵌入式系统编译“hello world”C 应用程序。 我正在使用这个 toolchain

当我使用 -static 编译标志编译 C 应用程序时,该应用程序运行良好。 当我删除 -static 标志时 - 我收到一个错误:can't load library 'libc.so.6'

libc.so.6 在目标上不存在, 进入目标设备上的/lib 文件夹,符号链接(symbolic link) libc.so.0 指向 libuClibc-0.9.33.2.so

我如何“告诉”编译器与 libc.so.0 链接?

最佳答案

从 openwrt 工具链(使用 uClibc,目标 IPQ4028)交叉编译一个简单的 helloworld 到我的路由器 Gl-iNet-B1300 时,我遇到了类似的问题。 编译成功后,我将文件 scp 到路由器,并在尝试执行时出现此错误:

    root@GL-B1300:~# ./helloworld
    /root/helloworld: can't load library 'libc.so.0'

当我运行 'ls -la | grep libc.so.'在/lib/上,出现了:

    libc.so.1 -> libuClibc-1.0.14.so

因为 libc.so.0 不存在,所以我只是在/lib/中创建了一个链接

    lib/# ln -s libc.so.1 libc.so.0

再次运行 'ls -la | grep libc.so.':

    libc.so.0 -> libc.so.1
    libc.so.1 -> libuClibc-1.0.14.so

然后,执行文件:

    root@GL-B1300:~# ./helloworld
    Hell! O' world, why won't my code compile?
    The value of pi is 3.141593

我想这里真正的问题是我使用的工具链不是路由器固件的正确工具链。

关于linux - uclinux - 与 libc.so.0 库的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23150747/

相关文章:

c++ - 如何比任何其他全局或静态变量更早地创建/构造类实例?

.net - 如何在 Ubuntu 16.04 LTS 上安装 dotnet SDK

linux - 独立辅助应用程序而不是将其嵌入到主应用程序中的缺点

android - 如何在系统用户上运行系统Android App

linux - 从不对齐 RSP 的函数调用时,glibc scanf 出现段错误

linux - 用于检查文件中是否存在段落/行流的 Shell 脚本

linux - 如何使用mpc8xxx_gpio.c设备驱动

android-ndk - 如何将libc添加到android应用程序中?

rust - 如何通过 libc::getgroups 为用户获取组?

linux - 告诉哪个版本的符号可用于链接(在 libc 中)?