Linux下程式設計(編譯)

2021-07-11 02:22:11 字數 2789 閱讀 8596

設定環境變數:

export ld_library_path=/home/yxhuang3/key_input/out/xrelease

mekfile相關

一般規則:

target ... : prerequisites ...

command...

目標檔案...:依賴檔案...

命令...

make將第乙個目標檔案(target),作為最終的目標檔案。

執行動作

動作名,其冒號後什麼也沒有。make不會自動執行該動作

.phony :clean :

rm edit main.o kbd.o command.o display.o /

insert.o search.o files.o utils.o

一般放在makefile檔案最後。make clean

我們可以在乙個makefile中定義與編譯無關的命令,比如程式的打包,程式的備份,等等。

「.phony」表示偽目標檔案。

注釋:

只有行注釋,用「#」字元

include:

使用include關鍵字可以把別的makefile包含進來

include filename

filename可以保含路徑和萬用字元

make命令開始時,會把找尋include所指出的其它makefile,並把其內容安置在當前的位置。

clean :

rm edit main.o kbd.o command.o display.o /

insert.o search.o files.o utils.o

變數:變數一般都是字串

objects = main.o kbd.o command.o display.o /

insert.o search.o files.o utils.o

以「$(objects)」的方式來使用這個變數。/表示連線符

「:=」操作符   變數賦值

「+=」操作符  給變數追加值

如果變數之前沒有定義過,那麼,「+=」會自動變成「=」,如果前面有變數定義,那麼「+=」會繼承於前次操作的賦值符。如果前一次的是「:=」,那麼「+=」會以「:=」作為其賦值符。

執行步驟:

1、讀入所有的makefile。

2、讀入被include的其它makefile。

3、初始化檔案中的變數。

4、推導隱晦規則,並分析所有規則。

5、為所有的目標檔案建立依賴關係鏈。

6、根據依賴關係,決定哪些目標要重新生成。

7、執行生成命令。

萬用字元:

「~/test」,這就表示當前使用者的$home目錄下的test目錄

「*.c」表示所以字尾為c的檔案

檔案搜尋:

vpath = src:../headers

make會在當前的目錄中和特殊變數「vpath」所指定的目錄中找尋依賴檔案和目標檔案。目錄由「冒號」分隔

通常,make會把其要執行的命令列在命令執行前輸出到螢幕上。當我們用「@」字元在命令行前,那麼,這個命令將不被make顯示出來。

@echo 正在編譯***模組......

略命令的出錯,我們可以在makefile的命令行前加乙個減號「-」

定義命令包:

如果makefile中出現一些相同命令序列,那麼我們可以為這些相同的命令序列定義乙個變數。定義這種命令序列的語法以「define」開始,以「endef」結束,如:

define run-yacc

yacc $(firstword $^)

mv y.tab.c $@

endef

這裡,「run-yacc」是這個命令包的名字,其不要和makefile中的變數重名。在「define」和「endef」之間的就是命令序列。

curdir是makefile的內嵌變數,顯示當前路徑

makecmdgoals  環境變數  表示make命令列中所有終極目標

make指定了「-e」引數,則系統環境變數將覆蓋makefile中定義的變數

echo -n 不換行輸出

echo -e 處理特殊字元

若字串中出現以下字元,則特別加以處理,而不會將它當成一般文字輸出:

\a 發出警告聲;

\b 刪除前乙個字元;

\c 最後不加上換行符號;

\f 換行但游標仍舊停留在原來的位置;

\n 換行且游標移至行首;

\r 游標移至行首,但不換行;

\t 插入tab;

\v 與\f相同;

\\ 插入\字元;

用echo命令列印帶有色彩的文字:文本色:

echo -e "\e[1;31mthis is red text\e[0m"

this is red text

顏色碼:重置=0,黑色=30,紅色=31,綠色=32,黃色=33,藍色=34,洋紅=35,青色=36,白色=37

背景色

echo -e "\e[1;42mgreed background\e[0m"

greed background

顏色碼:重置=0,黑色=40,紅色=41,綠色=42,黃色=43,藍色=44,洋紅=45,青色=46,白色=47

$(make)   一般表示make

make -c directory all    -c表示先進入目錄directory,再執行all

待續

Linux下編譯Android ffmpeg庫

ndk android ndk r14b linux x86 64.zip ffmpeg ffmpeg 3.3.4.tar.bz2 linux ubuntu 2.在ffmepg目錄下,編輯configure檔案,將 slibname with major slibname libmajor lib ...

Linux下核心編譯

這裡直接解壓會有問題,因為那個zip軟體固有的問題,導致解壓的時候出問題,一般這個時候不注意是看不出來的,在編譯的時候就會顯現出來,一般為檔名太長。symlink error file name too long這是解壓的時候報出來的,這個一般不注意看不出來的。下面是我make arch arm c...

Linux下程式設計

windows下我的環境為 windows10 vs2015 opencv3.4.0 opencv3.4.0 contrib python linux下我的環境為 ubuntu16004 也有ubuntu1804 opencv3.4.0 opencv3.4.0 contrib python gnu ...