Android 重启命令 - 谁调用reboot_main()?

标签 android c linker embedded-linux static-linking

我正在查看 android shell 的源代码 reboot 命令。

int reboot_main(int argc, char *argv[])
  • 我不清楚的是,如果这是一个独立的二进制文件,谁会调用reboot_main()?
  • 在标准 glibc 链接二进制文件中,我希望找到一个“main()”作为程序的入口点。

我在这里缺少什么,有人可以帮助我了解发生了什么吗?

谢谢, vj

最佳答案

它们都被编译成一个整体可执行文件,main位于 https://android.googlesource.com/platform/system/core.git/+/android-4.2.2_r1/toolbox/toolbox.c

然后,根据调用的实际程序名称(通常是 argv[0]),它调用适当的方法。

这些命令是通过以下方式构建的一部分

#define TOOL(name) int name##_main(int, char**);

toolbox.c 中的宏,用于在 Android.mk 文件中生成 tools.h

关于Android 重启命令 - 谁调用reboot_main()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826885/

相关文章:

linux - 是否在/usr/local/lib 中搜索共享库?

java - 在带有旋转动画的 Activity 之间切换

java - 如何从一个文件中读取大量 JSON-s

linux - rsync:/usr/lib/libpopt.so.0: 无可用版本信息(rsync 需要)

c++ - 为什么即使在包含 math.h 并使用 -lm 链接到数学库之后我仍然得到 "Undefined symbol: .sqrtf"

C pread给出不同的结果

java - Android:使用自定义可绘制对象时,在 Lollipop 之前 (SDK 16) 上扩展类 ImageView 时出错?

java - 如何使用 onClick 在 startService() 和 stopService() 之间切换?

c - 构建 Linux 内核模块的问题

c - 滚动一维数组并更改特定值