我正在尝试为Android设备构建,但我没有真正的SDK / NDK。与通常具有libc.so的Android设备不同,这个设备具有符号链接libc.so.6 - > libc-2.7.so。 如果我用常规的android NDK-x86构建我的共享库(由readelf -d报告)从libc.so导入,这在设备上不存在。
编号是什么,如果我只是说-lc,gcc / ld如何知道链接到libc.so.6?
更具体地说,该设备是一个Android谷歌电视盒(罗技revue),它似乎有点不同于常规的android,我猜它不使用延迟仿生和使用正常的libc,常规pthread和它的似乎更接近普通的Linux。
那么,我可以使用常规的android-x86工具链为具有不同libc的google tv设备生成代码吗?如何知道链接到libc.so.6(所以我可以告诉它链接到哪些库?)。我试图在链接时简单地对这些库进行硬编码,但后来我在运行时遇到了一些问题(缺少符号,因为它使用了不兼容的头文件和库)。
答案 0 :(得分:0)
这个编号是什么
您可以阅读有关外部库版本控制here的信息。
如果我只是说-lc,gcc / ld如何知道链接到libc.so.6?
在使用glibc的Linux上,libc.so
实际上是一个链接器脚本,包含如下内容:
GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a
AS_NEEDED ( /lib/ld-linux-x86-64.so.2 ) )
那么,我可以使用常规的android-x86工具链为具有不同libc的google tv设备生成代码吗?
不,你需要一个交叉 - 编译器。交叉编译器是在一个操作系统(这里是常规Linux)上运行的编译器,但创建一个可在其他地方运行的可执行文件(在Google V上)。
您最好的选择是下载适用于GoogleTV的SDK,其中包括此类交叉编译器以及所需的库。