SDK
Software Development Kit 軟件開發包
ADS
Application Development Suite 應用開發套件
一個便於開發者快速學習如何開發相應的應用的綜合套件。
通常包括:
- 編譯環境(全平臺、LinuxOS, VirtualBox for Windows/Mac)
- 手冊、文檔
- 各種庫
- Sample code/Demo code 示例代碼
我的理解啊,ADS所指的範圍比SDK小一點。
ADE
Application Development Environment 應用開發環境
API
Application Programming Interface 應用編程接口
其實就是一些預先定義好的函數。我們可以直接調用這些函數就可以。通常會有一個文檔,描述各函數正確的參數傳遞等使用方法。
這樣開發者就能夠直接訪問一組基於某軟件或硬件的例程,而無需知道源碼、理解內部工作機制。
任何程序的運行都要通過它去連接操作系統。
應用包的打包
打包的流程在各個應用各有不同
RDM立項、提交測試
RDM指研發管理(Research & Development Management)
公司一般會用這樣的平臺對一個項目的方方面面進行規劃、記錄、管理。
比如青銅器RDM,感興趣的可以去搜一下。
SVN
Subversion的簡稱,一個開放源代碼的程序源碼版本管理控制系統
項目源碼目錄
inc 存放項目應用層面的所有源碼頭文件(*.h)
lib 存放僅與當前項目有關的特殊庫文件(*.so / *.a)(相當於windows下的.c文件)
*.o文件:
在UNIX下,源碼編譯出的二進制文件。是一個最小的編譯單元 。
(相當於Windows下的*.obj)
在編譯時,只檢測程序語法,函數、變量是否被聲明。只要語法正確,編譯器就可以編譯出中間目標文件。
如果函數未被聲明,編譯器會給出一個警告,但可以生成Object File.
*.a文件:
是多個*.o文件的打包。靜態庫文件,用於靜態連接,整個函數庫的所有數據都會被整合進目標代碼中。
(相當於Windows下的*.lib)LIB包含函數代碼本身,在編譯時直接將代碼加入程序當中,稱爲靜態鏈接庫static link library。
*.so文件:
動態庫,用於動態鏈接。共享函數庫。
(相當於Windows下的.dll)(dynamic link library)
共享函數庫在編譯的時候,沒有被編譯進目標代碼中,當程序執行到相關函數時才調用共享函數庫裏相應的函數。
因此共享函數庫所產生的可執行文件比較小。
在鏈接程序時,鏈接器會在所有的Object File中找尋函數的實現,如果找不到,那到就會報鏈接錯誤碼
src 存放所有項目應用層面的所有源碼C文件(*.c)
makefile
告訴make命令如何去編譯和鏈接程序。定義規則來指定,哪些文件先編譯,哪些文件後編譯,哪些文件需要重新編譯。
語句:
target ... : prerequisites ...
command
prerequisites是要生成target所需要的東西。
過程:
- 預處理:將所有#define刪除;展開宏定義;處理#include,將被包含的文件插入;刪除註釋
- 編譯
- 彙編
- 鏈接:調用鏈接器ld進行鏈接,生成可執行文件。
爲什麼要Include “.h”文件,而不直接Include “.c”文件呢?爲什麼要進行區分呢?
.h文件內含函數聲明、宏定義、結構體定義
.c文件內含函數實現、變量定義