如何将内核静态库编译连接到驱动程序中去【转】

简介: 转自:http://blog.csdn.net/ganjianfeng2003/article/details/8089551 如何将内核静态库编译连接到驱动程序中去 2010-12-07 08:27 331人阅读 评论(1) 收藏 举报 http://blog.chinaunix.net/u2/61663/showart_2404744.html     刚上邮箱的时候发现一位网友向我询问这个问题,同时发送了一个链接给我了。
2010-12-07 08:27  331人阅读 评论(1) 收藏 举报

http://blog.chinaunix.net/u2/61663/showart_2404744.html

 

 

刚上邮箱的时候发现一位网友向我询问这个问题,同时发送了一个链接给我了。

上去一看,上面还留有我以前同样的提问,看看时间,都几年前在别人的帖子里面的提问了。貌似当时我遇到同样问题的时候也是到处发帖回帖询问来着的,问的地方有点多,要不是这位朋友给我链接,早不记得那个链接也有访问过,呵呵。

 

不过再往下看了后才发现,这个问题依然没有给出明确的回答,很多朋友给出的都是应用层库的链接,这和期望的内核层的链接是不一样的。

 

所以我把自己的一点理解写出来,给后面的朋友参考,期望对后来的朋友有所帮助。

 

 

我觉得在驱动程序里面编译链接内核静态库需要从三个方面注意:

1.       首先保证你正确生成了内核库文件,而非应用程序库文件;

2.       其次是除去静态库之外的驱动文件的正确性,包括内核库函数的调用和头文件的申明;

3.       正确修改驱动的Makefile

这几个方面都正确之后,就能正确地将内核库编译进指定的驱动中去。

 

 

下面详细给出个最简单的例子给大家参考,毕竟有代码参考才是大家快速编程的王道。

代码目录结构如下: 

DriverEntry.c

 

Makefile

 

lib

myalib.c

myalib.c

Makefile

 
 

1.         内核静态库文件的生成

 

内核库包含一个myalib.c和myalib.h文件,代码如下:

//myalib.c

void test(void)

{

    printk("A lib test./n");

}

 

//myalib.h

void test(void);

 

# This is the Makefile for parse.

RM = rm -f

 

CCFLAGS = -c

ARFLAG  = -rc

 

CC = gcc

AR = ar

 

lib_OBJECTS  =  myalib.o

lib_SOURCE  =  myalib.c

 

LIB = libtest.a

 

libtest.a:$(lib_OBJECTS)

         $(AR) $(ARFLAG) -o $@ $^

        

$(lib_OBJECTS):$(lib_SOURCE)

         $(CC) $(CCFLAGS) -o $@ $^

 

clean:

         $(RM) $(lib_OBJECTS.o)

         $(RM) $(LIB)

 

在输入终端下执行”make”命令即可生成正确的内核库文件。

【作者】 张昺华
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【facebook】 张昺华 zhangbinghua
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
目录
相关文章
|
3月前
|
Java Linux 程序员
Linux 下 JNA 调用动态连接库文件 so
Linux 下 JNA 调用动态连接库文件 so
65 0
|
3月前
|
算法 网络协议 Linux
Linux模块文件编译到内核与独立编译成.ko文件的方法
Linux模块文件编译到内核与独立编译成.ko文件的方法
207 0
|
9月前
将模块编译入内核
将模块编译入内核
71 0
|
9月前
|
Linux
编译进内核的驱动是如何工作的
编译进内核的驱动是如何工作的
72 0
编译进内核的驱动是如何工作的
|
9月前
|
Linux vr&ar 开发者
驱动编译进Linux内核
驱动编译进Linux内核
164 0
|
11月前
|
编译器 Linux 开发工具
调试记录 | Linux 内核静态库封装问题
调试记录 | Linux 内核静态库封装问题
254 0
|
Linux
Linux环境封装静态库
Linux环境封装静态库
90 0
|
Linux
LINUX加载静态库so,取得函数地址并调用
LINUX加载静态库so,取得函数地址并调用
278 0
|
Ubuntu Linux 数据安全/隐私保护
建立LINUX开发环境并编译LINUX和UBOOT以及生成设备树过程总结
建立LINUX开发环境并编译LINUX和UBOOT以及生成设备树过程总结
|
Linux 编译器 C语言
Linux下静态库、动态库的创建与调用
Linux下静态库、动态库的创建与调用
106 0