Linux下.ko, .o, .so, .a, .la文件
Linux下文件的类型是不依赖于其后缀名的,但一般来讲:
- .ko?是Linux 2.6内核使用的动态连接文件的后缀名,也就是模块文件,用来在Linux系统启动时加载内核模块
- .o?是目标文件,相当于windows中的.obj文件
- .so?为共享库,是shared object,用于动态连接的,和dll差不多
- .a?为静态库,是好多个.o合在一起,用于静态连接
- .la?为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看file *.la来查看文件类型
创建.a库文件和.o库文件:
$ gcc -c mylib.c
$ ar -r mylib.a mylib.o
动态链接库*.so的编译与使用
1、动态库的编译?
下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件,三个.c文件:
so_test.h
test_a.c
test_b.c
test_c.c
我们将这几个文件编译成一个动态库:libtest.so。
?
代码
so_test.h:
#include <stdio.h>
#include <stdlib.h>
void test_a();
void test_b();
void test_c();test_a.c:
"so_test.h"
#include
void test_a()
{
printf("this is in test_a...\n");
}test_b.c:
"so_test.h"
#include
<span sty