設定環境變數:
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"顏色碼:重置=0,黑色=30,紅色=31,綠色=32,黃色=33,藍色=34,洋紅=35,青色=36,白色=37this is red text
背景色:
echo -e "\e[1;42mgreed background\e[0m"顏色碼:重置=0,黑色=40,紅色=41,綠色=42,黃色=43,藍色=44,洋紅=45,青色=46,白色=47greed background
$(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 ...