首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >知道嵌入式系统使用的是glibc还是bionic?

知道嵌入式系统使用的是glibc还是bionic?
EN

Stack Overflow用户
提问于 2012-08-26 23:12:04
回答 1查看 2.3K关注 0票数 5

例如,安卓使用的是仿生而不是glibc,但如何确定它使用的是仿生http://en.wikipedia.org/wiki/Bionic_(software),而不是glibc?

我可以在/proc文件系统中找到这些信息吗?或者有什么命令可以告诉我当前系统上使用了bionic吗?

顺便问一下,在嵌入式系统上有可能有多个C库吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-27 03:06:56

如果您的代码需要根据它是与Bionic还是Glibc链接而有不同的行为,这可以而且必须在编译时确定。Bionic和Glibc无论如何都不是二进制兼容的,所以您需要在编译时提交一组头文件。

代码语言:javascript
复制
#if __BIONIC__
/* Bionic-specific code */    
#elif __GLIBC__
/* Glibc-specific code */
#else
#error "This C library is not supported"
#endif

您不会在/proc中找到任何信息,因为/proc包含关于内核的信息,而不是关于C库的信息。

从理论上讲,可以在一个系统上放置任意多的C库。然而,这在嵌入式系统上是非常不寻常的,因为它们通常试图保持较低的代码大小。我期望有多个C库的唯一系统是在嵌入式开发人员的机器上,如果开发人员碰巧不是交叉编译的(这在一开始是很少见的)。此外,Bionic只在Android上使用,只有Bionic在Android上使用,所以所有Android系统都有Bionic,而其他系统没有Bionic。非Android Linux系统还有一些其他的库,要么是Glibc,要么(在嵌入式系统上)是其他的libc,比如uClibc或Dietlibc。

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

https://stackoverflow.com/questions/12131219

复制
相关文章

相似问题

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