首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有libc.so.0库的uclinux链接

带有libc.so.0库的uclinux链接
EN

Stack Overflow用户
提问于 2014-04-18 08:53:47
回答 3查看 4K关注 0票数 4

我试图用ARM处理器运行uClinux来编译嵌入式系统的"hello“C应用程序。我在用这个工具链

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-18 09:21:03

似乎您正在使用的工具链是为glibc构建的。但是目标板已经安装了uClibc。

这两个库是不兼容的。

在运行时,它们是不兼容的,而在编译时它们是不兼容的。

您不能“告诉编译器使用不同的和不兼容的库。

您需要获得专门为uClibc构建的工具链,而不是glibc/eglibc。

站点gnuarm.com曾经有一些可靠的工具链,但是那个站点已经不复存在了。

您可以尝试使用曲柄-NG构建自己的工具链,这比构建单个工具链包容易得多。尝试arm-unknown-linux-uclibcgnueabi配置并根据您的需要定制它。

票数 2
EN

Stack Overflow用户

发布于 2018-04-09 12:30:21

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

代码语言:javascript
复制
    root@GL-B1300:~# ./helloworld
    /root/helloworld: can't load library 'libc.so.0'

当我运行'ls -la \ grep libc.so‘时。关于/lib/,出现了这样的情况:

代码语言:javascript
复制
    libc.so.1 -> libuClibc-1.0.14.so

因此,由于libc.so.0不存在,我只是在/lib/中创建了一个链接。

代码语言:javascript
复制
    lib/# ln -s libc.so.1 libc.so.0

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

代码语言:javascript
复制
    libc.so.0 -> libc.so.1
    libc.so.1 -> libuClibc-1.0.14.so

然后,执行该文件:

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

我想真正的问题是,我使用的工具链并不适合路由器固件。

票数 3
EN

Stack Overflow用户

发布于 2014-04-18 09:32:07

如果删除XXX.lib,则应该在代码中添加"load -I“代码。静态链接和动态链接有一些不同,你可以在Google中找到。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23150747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档