之前我已经从安卓的原生代码中挑选了必要的一些模块然后将它们在linux上进行编译和链接,但是那个service_manager.c编译出来的运行失败,无法打开文件,我是想先绕过去,没想到,当我自己编写的下面例程时发生了一样的事情:
经过gdb跟踪发现确认是内核中没有安装binder驱动,将binder驱动编译进内核后重新启动linux看到了binder已经成功安装。
但是还不知道这个binder是否能够正常工作。
我用gdb ./service_manager.out来进行一个初步的确认,这个out文件是编译frameworks/base/cmd/servicemanage/service_manager.c产生的可执行文件。
断点设置在268行然后跟进去,一步步观察,如下图:
看到了,gdb显示文件描述符,和映射的两个参数已经分配成功了!
binder一直是linux运行android代码的一个障碍,希望这个问题今后成为一个历史!