Android深度探索第八章

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android深度探索第八章相关的知识,希望对你有一定的参考价值。

  C或C++语言中编译多个源代码文件时,如果a.c使用了b.c文件中的函数,需要在a.c文件中使用extern预先定义b.c中的函数,extern的作用就是告诉编译器该函数的函数名、参数个数、参数类型和返回值类型。这些信息对于将a.c编译成a.o已经足够了。等到将a.o,b.o链接成可执行的文件或程序库时,编译器再到b.o中寻找函数的具体实现。也就是说,extern只在编译阶段起作用。除此之外,还可以使用b.h中定义b.c中的函数,然后在a.c中包含b.h文件。对于有些C/C++编译器,可以省略extern关键字。

  整合各个文件组成Linux驱动,编写Makefile文件是最关键的一步。如果Linux驱动只有一个源代码文件,obj-m变量的值可以和源代码文件同名。如果Linux驱动包含多个文件,就需要使用module-y来指定所有的目标文件。而不能只指定被引用的目标文件。

  在某些情况下,可能程序会出现异常情况,这时Linux驱动可能会无法正常的卸载。可以通过重启模拟器或开发板,动态Linux模块就可以从内存中卸载。但如果每次无法卸载驱动都需要重启机器,那就太过于麻烦了。当然不是所有的奔溃都可以解决只有初始化函数奔溃或卸载函数被阻塞才有一定的方法解决。

以上是关于Android深度探索第八章的主要内容,如果未能解决你的问题,请参考以下文章

Android深度探索(卷一)HAL与驱动开发 第八章

《Android深度探索》卷1 第八章笔记 1314 王宁

Android深度探索读书笔记 第八章

Android深度探索第八章

Android深度探索第八章

Android深度探索--第八章读后感