1. 程式人生 > >linux下.so、.ko、.a的區別

linux下.so、.ko、.a的區別

之間 模塊相互調用 進行 編譯 靜態庫 打包 通信 各類 內核

各類文件的區別與作用:

1、對於.so文件

.so文件是用戶層的動態鏈接庫,用於用戶層的動態鏈接使用,內核態的代碼同樣不能直接訪問。

2、對於.ko文件

obj-m = *.o
obj-y = *.o
上面兩者的區別在於,前者才會生成ko文件,後者只是代碼編譯進內核,並不生成ko文件。

.ko文件是內核態的動態鏈接庫,用於內核態的動態鏈接使用,可以用於內核之間的模塊相互調用。用戶態的代碼不可直接調用內核態的代碼,但是可以通過其他方式進行通信。

3、對於.a文件

.a文件是用於靜態鏈接時,使用的靜態庫。

4、對於.o文件

.o文件是目標文件,編譯生成,.a文件就是由.o文件打包生成的。

linux下.so、.ko、.a的區別