linux開發入門第一步

2021-09-13 10:04:08 字數 2479 閱讀 6766

前言:

本人14年畢業一直從事嵌入式開發,從微控制器程式+電路+pcb設計+物料採購+除錯焊接+批量生產+文件整理。那個心碎呀。。

言歸正傳,對linux一直有接觸,但是一直沒有整理,感覺零零散散,一點都不圓潤。在此從零整理linux,也給自己梳理開發流程,總結開發過程,勿重複造輪子,時間就是金錢,效率就是生命。每項技能吸收成自己的技術,靈活應用,盡早跨過學習成長期,延長收入期。

gcc編譯

4個流程:

總結如下:通俗易懂,不失章節。

預處理(pre-processing

)、編譯(

compiling

)、彙編(

assembling

)、鏈結(

linking)

hello.c

#include

void main()

printf("wowowo");

第一步(預處理)

gcc

–ehello.c –o hello.i

gcc將stdio.h

編譯進來。

第二步(編譯)

gcc

–shello.i –o hello,s

gcc檢查**規範性、語法等、無誤後將**編譯成組合語言。

第三步(彙編)

gcc

–chello.s –o hello.o

gcc將彙編**轉化成二進位制**。

第四步(鏈結)gcc會到系統預設路徑」/usr/lib」下進行查詢  ,及鏈結libc.so.6函式中去。

gcc hello.o –o hello

擴充套件語錄:工作中很少每一步都逐個編譯,都是一步到位,生成hello檔案。

函式庫:一般在使用第三方的應用的時候會涉及到函式庫,比如ssh,加密等。 .a

動態庫:編譯鏈結時,未把庫檔案**加到檔案中,在程式執行時鏈結檔案載入庫。字尾

表示在/root/test/

目錄下搜尋標頭檔案。

linux

中標頭檔案預設放到「

/usr/include

」目錄下。

include < 123.h>        :表示在標準路徑中搜尋標頭檔案(注:預設為「

/usr/include」,也可以將*.h所在路徑新增到系統環境變數中)。

include

「123.h」

:表示在本目錄中優先搜尋。

-ldir

gcc hello.c –l /root/test/lib –lsunq –o hello 表示

hello.c

需要用到

/root/test/lib

目錄下的乙個動態庫

libsunq.so 由於

linux

下的庫檔案命名規定:必須以l、

i、b 3個字母開頭。因此在用

-l選項指定鏈結的庫檔名時可省去l、

i、b 3個字母。

gcc對

-lsunq

處理時,自動連線名為

libsunq.so

的檔案

「-i dir

」和「-l dir

」都只是指定路徑,未指定檔案,因此不能在路徑中包含檔名。

靜態庫製作:

gcc –

chello.

c->

得到:hello.o ar

crvlibmylib

.ahello

.o得到

libmylib.a

通過ar t libmylib.a 

可以檢視

libmylib.a 

中包含的目標檔案。

總結:1、預處理階段

僅僅將#include」***.h」

中的需要檔案載入進來(經過

#if 0  #endif

處理後載入)。

條件:c檔案中必須有標頭檔案,必須可找到標頭檔案。可以沒有庫或函式實現體。(

-i 找到標頭檔案路徑即可,無需指定具體

.**件)。

2、編譯

無需任何外部資源,檢查即可。

3、彙編

對應的g++/gcc

編譯;

無需其他資源。

4、鏈結 使用

-l 指定庫路徑

-llibray 

(指定庫名字)

動態庫

.so動態庫 .a

靜態庫

結語:

Python入門第一步

我覺得,開始學習一門程式設計時候,不僅僅是要去學習它的語法,而是在給你一段 的時候,你能夠對這段 的主要結構在心裡面有乙個大致的框架,也就是你要知道這一塊是幹什麼的,那一塊又是幹什麼的,然後再一塊一塊的詳細去看 的具體語句。1.物件是在應用程式中使用的 組合成乙個單一的實體的資料。例如,物件導向使用...

OPENCV入門第一步

很仰慕opencv,從未使用過,現在終於邁出了第一步,以茲記錄。目的 將opencv源 編譯後,在codeblock環境下使用。工作環境 opencv4.2.0,codeblock17.12,cmake3.12.2,win10。準備工作 1 入門的幾個小步驟 4.2.0 tar gz step2 使...

Django開發第一步

1 django組成部分筆記 組成部分 含義django admin.py 用於管理任務的命令列工具 manage.py 命令列使用工具,使用者django應用進行各種互動 python manage.py runserver 127.0.0.1 80 啟動專案程式和埠 manage.py crea...