鸿蒙与Android系统 各自的标准C库
GNU C库,也称为glibc, 是C标准库的GNU项目实现。并非所有的标准C函数都可以在glibc中找到:大多数数学函数实际上是在libm库中实现的,这是一个独立的库。截至今天,glibc是Linux上使用最广泛的C库。Bionic是Google为其Android操作系统所编写的C标准库实现,它直接在底层使用。 第三方开发者可以通过Android原生开发工具包(NDK)访问Bionic,该工具集
GNU C库,也称为glibc, 是C标准库的GNU项目实现。并非所有的标准C函数都可以在glibc中找到:大多数数学函数实际上是在libm库中实现的,这是一个独立的库。
截至今天,glibc是Linux上使用最广泛的C库。
Bionic是Google为其Android操作系统所编写的C标准库实现,它直接在底层使用。 第三方开发者可以通过Android原生开发工具包(NDK)访问Bionic,该工具集允许你使用C和C++代码编写Android应用程序。
在 C++ 端, NDK提供了很多版本的实现:
- libc++,从从Lollipop开始的官方安卓系统和现代Mac操作系统都将其作为C++标准库使用。从NDK发布17版本开始,它将成为NDK中唯一可用的C++标准库实现;
- gnustl,libstdc++的别名,这两者在GNU/linux是同一个库。这个库的已被弃用,它将在NDK发布18中删除;
- STLport,由STLport项目编写的C++标准库的第三方实现,自2008年以来一直处于不活跃状态。与gnustl一样,STLport将在NDK发布18中移除。
鸿蒙系统 POSIX 标准库: 基于 Musl C 的 posix 标准库
其中兼容 POSIX 的库是 Musl-libc。该库是一个轻量级的 C 标准库,设计作为 GNU C library (glibc)、 uClibc 或 Android Bionic 的替代用于嵌入式操作系统和移动设备。它遵循 POSIX 2008 规格和 C99 标准,采用 MIT 许可证授权,使用 Musl 的 Linux 发行版和项目包括 sabotage,bootstrap-linux,LightCube OS 等等,然后通过 HDF 来统一驱动模块的编写调试过程。以此来兼容驱动设备。
我们在调试时可能需要修改某些内核变量,这种情况下printk就无能为力,而如果为了修改某个值重新编译内核或者驱动又过于低效,此时就需要一个临时的文件系统可以把我们需要关心的数据映射到用户空间,可以write,cat,echo操作等
默认情况下,debugfs会被挂载在目录/sys/kernel/debug之下,如果您的发行版里没有自动挂载,可以用如下命令手动完成:
# mount -t debugfs none /your/debugfs/dir
# mount -t debugfs none /sys/kernel/debug/
(1)debugfs文件系统是基于内存的虚拟文件系统,用于内核的调试,以文件的方式呈现内核中的数据;
(2))在内核配置文件中修改"CONFIG_DEBUG_FS=y";或者"make menuconfig"中选中"Debug Filesystem";
国内ndk下载路径
更多推荐
所有评论(0)