導航:首頁 > 源碼編譯 > 編譯生成的驅動程序文件名

編譯生成的驅動程序文件名

發布時間:2022-05-26 14:32:50

㈠ 如何編譯驅動程序

驅動的編譯和上層應用程序的編譯完全不同,作為初學者應該先了解一下,即使你還不懂得怎麼寫驅動程序。
首先安裝DDK,然後隨便找一個例子來測試。在菜單中找到BUILD環境菜單執行,不同的系統要使用不同的BUILD環境。會打開一個DOS窗口,這時CD到那個例子程序,輸入 build –cZ回車就可以了。 驅動程序都是用一個由DDK提供的叫build.exe的工具編譯的。此程序以一個名為SOURCES的文件作為輸入,該文件中包含目標可執行文件的名稱、類型和要創建的可執行文件的路徑,注意這個文件沒有後綴名。
SOURCES的文件格式:
TARGETNAME=drivername ,
- 本參數用於指定生成的設備驅動程序名稱(不需後綴名),所產生的文件
- 為drivername.sys.

TARGETPATH=./lib
- 本參數用於指定生成的設備驅動程序所存放的路徑. 一般採用./lib.

TARGETTYPE=DRIVER
- build能夠生成許多不同的目標對象,設備驅動程序一般選用 DRIVER.

INCLUDES=path1;path2;...
- 本參數是可選的, 用於指定其他的#include文件的搜索路徑.

TARGETLIBS=lib1;lib2;...
- 本參數是可選的, 用於指定其他的lib庫文件的搜索路徑.

SOURCES=file1.c file2.c ...
- 本參數用於指定需被編譯的全部源文件名稱, 後綴名不能省略,文件名之間用空格分開.
SOURCES文件是必需的,如果沒有它則表示沒有任何源文件需要編譯。
如果要換行可以用 『/』 符號,表示對上一行的繼續。

也可以創建DIRS文件,DIRS文件用於指定在當前目錄下必須創建的子目錄。
DIRS文件格式:
DIRS文件的內容由一系列用空格分開的目錄名組成
DIRS = /
subdir1 /
subdir2 /
subdir3
DIRS文件是可選的。

有的時候,會提示找不到依賴的文件(.h,.lib 之類),其實設置好 source 文件的
INCLUDES和TARGETLIBS就可以,我第一次編譯時就碰到這個問題,和VC環境區別較大,但習慣就好。

㈡ c語言源程序文件經過編譯後生成文件的擴展名是什麼

源程序一般是.c或者.cpp
頭文件是.h
編譯後是.obj
鏈接後是.exe

㈢ 如何編寫驅動程序

代碼:

#include<linux/mole.h>

#include<linux/kernel.h>

#include<asm/io.h>

#include<linux/miscdevice.h>

#include<linux/fs.h>

#include<asm/uaccess.h>

//流水燈代碼

#define GPM4CON 0x110002e0

#define GPM4DAT 0x110002e4

static unsigned long*ledcon=NULL;

static unsigned long*leddat=NULL;

//自定義write文件操作(不自定義的話,內核有默認的一套文件操作函數)

static ssize_t test_write(struct file*filp,const char __user*buff,size_t count,loff_t*offset)

{

int value=0;

int ret=0;

ret=_from_user(&value,buff,4);

//底層驅動只定義基本操作動作,不定義功能

if(value==1)

{

*leddat|=0x0f;

*leddat&=0xfe;

}

if(value==2)

{

*leddat|=0x0f;

*leddat&=0xfd;

}

if(value==3)

{

*leddat|=0x0f;

*leddat&=0xfb;

}

if(value==4)

{

*leddat|=0x0f;

*leddat&=0xf7;

}

return 0;

}

//文件操作結構體初始化

static struct file_operations g_tfops={

.owner=THIS_MODULE,

.write=test_write,

};

//雜設備信息結構體初始化

static struct miscdevice g_tmisc={

.minor=MISC_DYNAMIC_MINOR,

.name="test_led",

.fops=&g_tfops,

};

//驅動入口函數雜設備初始化

static int __init test_misc_init(void)

{

//IO地址空間映射到內核的虛擬地址空間

ledcon=ioremap(GPM4CON,4);

leddat=ioremap(GPM4DAT,4);

//初始化led

*ledcon&=0xffff0000;

*ledcon|=0x00001111;

*leddat|=0x0f;

//雜設備注冊函數

misc_register(&g_tmisc);

return 0;

}

//驅動出口函數

static void __exit test_misc_exit(void)

{

//釋放地址映射

iounmap(ledcon);

iounmap(leddat);

}

//指定模塊的出入口函數

mole_init(test_misc_init);

mole_exit(test_misc_exit);

MODULE_LICENSE("GPL");

(3)編譯生成的驅動程序文件名擴展閱讀:

include用法:

#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。

插入頭文件的內容

#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:

1、#include<文件名>

2、#include"文件名"

如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:

#include<math.h>//一些數學函數的原型,以及相關的類型和宏

如果需要包含針對程序所開發的源文件,則應該使用第二種格式。

採用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。如下例所示:

#include"myproject.h"//用在當前項目中的函數原型、類型定義和宏

你可以在#include命令中使用宏。如果使用宏,該宏的取代結果必須確保生成正確的#include命令。例1展示了這樣的#include命令。

【例1】在#include命令中的宏

#ifdef _DEBUG_

#define MY_HEADER"myProject_dbg.h"

#else

#define MY_HEADER"myProject.h"

#endif

#include MY_HEADER

當上述程序代碼進入預處理時,如果_DEBUG_宏已被定義,那麼預處理器會插入myProject_dbg.h的內容;如果還沒定義,則插入myProject.h的內容。

㈣ c語言,用vc6.0++寫一個程序,為什麼編譯和組建產生的文件名不同

VisualC++6.0簡稱VC或者VC6.0,是微軟1998年推出的一款C/C++ IDE,界面友好,調試功能強大。VC6.0是一款革命性的產品,非常經典,至今仍然有很多企業和個人在使用,很多高校也將VC6.0作為C語言的教學基礎,作為上機實驗的工具。本教程中的代碼,也都是在VC6.0下運行通過。

VC6.0 確實有點老了,如果不是學校要求或者項目需要,建議使用 Visual Studio 代替,這里之所以講解 VC6.0,是為了照顧在校生或者有特殊需求的讀者。

安裝VC6.0

微軟原版的 VC6.0 已經不容易找到,網上提供的都是經過第三方修改的版本,刪除了一些使用不到的功能,增強了兼容性。這里我們使用 VC6.0 完整綠色版,它能夠支持一般的 C/C++ 應用程序開發以及計算機二級考試。

下載地址:VC 6.0中文版下載

在VC6.0下運行C語言程序

C-Free 支持單個源文件的編譯和鏈接,但是在VC6.0下,必須先創建工程(Project),然後再添加源文件。一個真正的軟體,往往需要多個源文件和多種資源,例如圖片、視頻、控制項等,通常是把它們放到一個文件夾下,進行有效的管理。你可以把工程理解為這樣的一個文件夾,IDE通過工程來管理這些文件。工程有不同的類型,例如開發「黑窗口」的控制台程序,需要創建Win32 Console Application工程;開發帶界面的GUI程序,需要創建Win32 Application工程。

1) 新建Win32 Console Application工程

打開VC6.0,在菜單欄中選擇「文件 -> 新建」,或者 Ctrl+N,彈出下面的對話框:


注意:編譯生成的 .exe 文件在工程目錄下的Debug文件夾內。以上面的工程為例,路徑為E:cDemo,打開看到有一個Debug文件夾,進入可以看到 cDemo.exe。

在Debug目錄中還會看到一個名為 hello.obj 的文件。.obj是VC/VS生成的目標文件,類似於C-Free下的.o文件。

工程文件說明

進入工程目錄 E:cDemo,除了 hello.c,還會看到很多其他文件,它們是VC6.0創建的,用來支持當前工程,不屬於C語言的范圍,你可以忽略它們。

如果讀者感興趣,我們也提供了簡單的說明:
1) .dsp文件:DeveloperStudio Project,工程文件(文本格式),用來保存當前工程的信息,例如編譯參數、包含的源文件等,不建議手動編輯。當需要打開一個工程時,打開該文件即可。

2).dsw文件:DeveloperStudio Workspace,工作區文件,和DSP類似。

3) .opt文件:IDE的Option文件,保存了與當前工程有關的開發環境的配置,例如工具條位置、打開的文件、游標位置等。

4) .plg文件:日誌文件(HTML文件),保存了程序的編譯信息,例如錯誤和警告等。

一個工程可以包含多個源文件和資源文件(圖片、視頻等),但只能生成一個二進制文件,例如可執行程序.exe、動態鏈接庫.dll、靜態鏈接庫.lib等。工程類型決定了不同的配置信息,也決定了生成不同的二進制文件。

一個工作區可以包含多個工程,能夠批量生成多個二進制文件。

我們安裝的較大的程序,安裝目錄中一般包含多個 EXE 和 DLL。對於這樣的程序,可以先創建一個工作區,再創建多個工程,這樣就能一次性生成所需的多個二進制文件。

㈤ 說出C語言源程序及編譯、連接後的文件擴展名發生了什麼變化

說出C語言源程序及編譯、連接後的文件擴展名發生變化:C語言源文件後綴名是.c,編譯生成的文件後綴名是.obj,連接後可執行文件的後綴名是.exe。

如果只生成一個文件,那麼這個題目答案是B。編譯(compile)後生成目標文件,後綴:.obj。也就是機器碼。然後鏈接器(Linker) 連接生成可執行文件,後綴:.exe。最後運行命令(go),直接運行.exe文件。

簡介

在嵌入式系統編程中不管是內核的驅動程序還是應用程序的編寫,涉及到大量的預處理與條件編譯,這樣做的好處主要體現在代碼的移植性強以及代碼的修改方便等方面。因此引入了預處理與條件編譯的概念。預處理(或稱預編譯)是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。預處理指令指示在程序正式編譯前就由編譯器進行的操作,可放在程序中任何位置。

㈥ C語言源程序文件的後綴是什麼,經過編譯後生成文件的後綴是什麼經過連接後生成文件的後綴是什麼

C語言源文件後綴名是.c,編譯生成的文件後綴名是.obj,連接後可執行文件的後綴名是.exe。

源文件的後綴僅僅是為了表明該文件中保存的是某種語言的代碼(例如.c文件中保存的是C語言代碼),這樣程序員更加容易區分,編譯器也更加容易識別,它並不會導致該文件的內部格式發生改變。



(6)編譯生成的驅動程序文件名擴展閱讀

C語言是一種結構化語言,它有著清晰的層次,可按照模塊的方式對程序進行編寫,十分有利於程序的調試,且c語言的處理和表現能力都非常的強大。

依靠非常全面的運算符和多樣的數據類型,可以輕易完成各種數據結構的構建,通過指針類型更可對內存直接定址以及對硬體進行直接操作,因此既能夠用於開發系統程序,也可用於開發應用軟體。

C語言是普適性最強的一種計算機程序編輯語言,它不僅可以發揮出高級編程語言的功用,還具有匯編語言的優點。

㈦ 在Linux2.6內核中驅動程序編譯後生成的是什麼文件啊*.ko還是*.o

2.6內核中的驅動文件編譯完成後是.ko結尾,
2.4內核中的驅動文件編譯完成後是.o結尾,

㈧ 如何編譯linux usb驅動

得自己寫makefile文件

ifneq($(KERNELRELEASE),)
obj-m:=xxx.o
else
KERNELDIR?=/lib/moles/$(shelluname-r)/build
PWD:=$(shellpwd)
default:
$(MAKE)-C$(KERNELDIR)M=$(PWD)moles
endif
clean:
rm-rf*.mod.**.o*.ko.*.ko.*.tmp*.*.mod.o.*.*.o.*


其 中xxx是源文件的文件名,在linux下直接執行make就可以生成驅動模塊(xxx.ko)了。生成驅動模塊後使用insmod xxx.ko就可以插入到內核中運行了,用lsmod可以看到你插入到內核中的模塊,也可以從系統中用命令rmmod xxx把模塊卸載掉;如果把編譯出來的驅動模塊拷貝到/lib/moles/~/kernel/drivers/usb/下,然後depmod一下, 那麼你在插入USB設備的時候,系統就會自動為你載入驅動模塊的;當然這個得有hotplug的支持;載入驅動模塊成功後就會在/dev/下生成設備文件 了,如果用命令cat /proc/bus/usb/devices,我們可以看到驅動程序已經綁定到介面上了:
T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=1234 ProdID=2345 Rev= 1.10
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA
I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=test_usb_driver /*我們的驅動*/
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
此框架程序生成的是skel0(可以自由修改)的設備文件,現在就可以對這個設備文件進行打開、讀寫、關閉等的操作了。

㈨ c++編譯生成文件的文件名稱怎麼改成自己想要的名稱呢

你用的是什麼編譯器呢??
如果是visual studio,右擊項目,點「屬性」,在對話框左側展開」配置屬性「點擊第一項「常規」,在對話框右側有「輸出目錄」、「目標文件名」、「目標文件擴展名」等項目,按需要修改就行了

㈩ 驅動程序在哪個文件夾裡面

通常都在INF(隱藏)、SYSTEM和SYSTEM32文件夾里

閱讀全文

與編譯生成的驅動程序文件名相關的資料

熱點內容
java單擊事件 瀏覽:641
絕對尺寸編程法 瀏覽:265
伺服器共享文件夾中病毒 瀏覽:35
哪個app會員看綜藝最全 瀏覽:761
程序員朋友圈招聘 瀏覽:339
細細的小木棍怎麼做解壓玩具 瀏覽:36
不要惹程序員的視頻 瀏覽:995
碼高編程如何加盟 瀏覽:756
程序員好處有哪些 瀏覽:954
c語言編譯後的程序 瀏覽:12
公交卡單片機 瀏覽:745
減壓縮軟體下載 瀏覽:300
51單片機復位電路有哪兩種 瀏覽:923
et2008加密狗教程 瀏覽:965
安卓手機用什麼錄制高清視頻 瀏覽:749
cadim命令如何應用 瀏覽:949
免費ntp時鍾伺服器地址 瀏覽:686
域名如何與雲伺服器綁定 瀏覽:808
linuxjava環境搭建教程 瀏覽:128
單片機串口如何引起中斷 瀏覽:272