首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android/linux (x86) libc.so上链接到libc vs. libc.so.6

在android/linux (x86) libc.so上链接到libc vs. libc.so.6
EN

Stack Overflow用户
提问于 2012-04-15 10:38:22
回答 1查看 3.3K关注 0票数 0

我正在尝试为android设备构建,但我没有真正的SDK/NDK。与安装了libc.so的普通安卓设备不同,这个设备有符号链接libc.so.6 --> libc-2.7.so。如果我使用常规的android NDK-x86构建,我的共享库(据readelf -d报道)是从设备上不存在的libc.so导入的。

编号是关于什么的,如果我简单地说-lc,那么gcc/ld是如何知道链接到libc.so.6的?

更具体地说,这款设备是一款android google tv box (罗技版本),看起来和普通的android有点不同,我猜它没有使用迟缓的仿生,而是使用了普通的libc,普通的pthread,它看起来更接近普通的linux。

那么,我可以使用常规的android-x86工具链为具有不同libc的google tv设备生成代码吗?它如何知道改为链接到libc.so.6 (这样我就可以告诉它要链接到哪些库?)。我试图在链接时对这些库进行硬编码,但在运行时遇到了一些问题(缺少符号,因为它使用了不兼容的头和库)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-18 12:31:48

编号是怎么回事?

您可以阅读有关外部库版本控制here的内容。

如果我简单地说-lc,gcc/ld怎么知道要链接到libc.so.6?

在带有glibc的Linux上,libc.so实际上是一个链接器脚本,包含如下内容:

代码语言:javascript
复制
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a 
         AS_NEEDED ( /lib/ld-linux-x86-64.so.2 ) )

那么,我可以使用常规的android-x86工具链为具有不同libc的

tv设备生成代码吗?

不,你需要一个交叉编译器。交叉编译器是在一个操作系统(这里是普通的Linux )上运行的编译器,但创建的可执行文件将在其他地方运行(在Google V上)。

最好的办法是下载用于GoogleTV的SDK,其中将包含这样的交叉编译器以及所需的库。

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

https://stackoverflow.com/questions/10159107

复制
相关文章

相似问题

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