linux make 常用引數

2021-06-29 02:11:40 字數 4579 閱讀 7269

aclocal ; autoheader; automake ; autoconf

./configure 自動生成makefile檔案

把make過程列印的所有資訊都儲存在***.log中。

$make 2>&1|tee ***.log

./configure --prefix=/tmp/prefix

./configure --help

make install 

destdir=/whereto 

make uninstall

make v=99 //make時顯示詳細資訊

./configure 

--disable-static 不編譯靜態檔案

aclocal

根據configure.in

檔案的內容,自動生成

aclocal.m4

檔案aclocal -i /usr/share/aclocal -i /usr/m4-1.4.9/m4 --install

autoconf

從configure.in

這個列舉編譯軟體時所需要各種引數的模板檔案中建立

configure

automake

會根據你寫的

makefile.am

來自動生成

makefile.in

執行configure

生成makefile

make -f pax.mk // run pax.mk

automake --force-missing --add-missing

ldd --version 檢視glibc版本

在makefile中:$@

表示規則中的目標檔案集。在模式規則中,如果有多個目標,那麼,"$@"就是匹配於目標中模式定義的集合。 $%

僅當目標是函式庫檔案中,表示規則中的目標成員名。例如,如果乙個目標是"foo.a(bar.o)",那麼,"$%"就是"bar.o","$@"就是 "foo.a"。如果目標不是函式庫檔案(unix下是[.a],windows下是[.lib]),那麼,其值為空。

$<

依賴目標中的第乙個目標名字。如果依賴目標是以模式(即"%")定義的,那麼"$<"將是符合模式的一系列的檔案集。注意,其是乙個乙個取出來的。 $?

所有比目標新的依賴目標的集合。以空格分隔。 $^

所有的依賴目標的集合。以空格分隔。如果在依賴目標中有多個重複的,那個這個變數會去除重複的依賴目標,只保留乙份。

cflags: 指定標頭檔案(.h檔案)的路徑,如:cflags=-i/usr/include -i/path/include。同樣地,安裝乙個包時會在安裝路徑下建立乙個include目錄,當安裝過程中出現問題時,試著把以前安裝的包的include目錄加入到該變數中來。

ldflags:gcc 等編譯器會用到的一些優化引數,也可以在裡面指定庫檔案的位置。用法:ldflags=-l/usr/lib -l/path/to/your/lib。每安裝乙個包都幾乎一定的會在安裝目錄裡建立乙個lib目錄。如果明明安裝了某個包,而安裝另乙個包時,它愣是 說找不到,可以抒那個包的lib路徑加入的ldfalgs中試一下。

libs:告訴鏈結器要鏈結哪些庫檔案,如libs = -lpthread -liconv

簡單地說,ldflags是告訴鏈結器從**尋找庫檔案,而libs是告訴鏈結器要鏈結哪些庫檔案。不過使用時鏈結階段這兩個引數都會加上,所以你即使將這兩個的值互換,也沒有問題。

有時候ldflags指定-l雖然能讓鏈結器找到庫進行鏈結,但是執行時鏈結器卻找不到這個庫,如果要讓軟體執行時庫檔案的路徑也得到擴充套件,那麼我們需要增加這兩個庫給」-wl,r」:

config.log 搜尋關鍵字cannot

1.error

configure.in:7: version mismatch.  this is automake 1.9.6,

configure.in:7: but the definition used by this am_init_automake

configure.in:7: comes from automake 1.9.5.  you should recreate

configure.in:7: aclocal.m4 with aclocal and run automake again.

解決方法

$aclocal

$automake

將重新生成makefile檔案

2.[root@localhost src]# ./configure

-bash: ./configure: no such file or directory

[root@localhost src]# aclocal

aclocal: `configure.ac' and `configure.in' both present.

aclocal: proceeding with `configure.ac'.

[root@localhost src]# autoconf

autoconf: warning: both `configure.ac' and `configure.in' are present.

autoconf: warning: proceeding with `configure.ac'.

root@localhost src]# ./configure

checking which defines needed for makedepend... 

checking for a bsd-compatible install... /usr/bin/install -c

aclocal, autoconf, 之後可以正常執行./configure了

3.

+ autoreconf --install

configure.ac:32: warning: macro 'am_prog_libtool' not found in library

configure.ac:32: error: possibly undefined macro: am_prog_libtool

if this token and others are legitimate, please use m4_pattern_allow.

see the autoconf documentation.

autoreconf: /usr/bin/autoconf failed with exit status: 1

autoreconf -fvito make sure everything is updated.

4.

configure.ac:10: error: possibly undefined macro: ac_prog_libtool
if this token and others are legitimate, please use m4_pattern_allow.

see the autoconf documentation.

autoreconf: /usr/bin/autoconf failed with exit status: 1

apt-get install libtool

5.

$ sudo pacman -s pkg-config xorg-server-devel libtool automake

$ libtoolize --force

consider adding ac_config_macro_dir([m4]) to configure.ac

and re-run libtoolize --force.

$ vim configure.ac

$ libtoolize --force

$ aclocal

$ autoheader

$ automake --force-missing --add-missing

$ autoconf

6. ./configure: line 17661: syntax error near unexpected token `harfbuzz,'

slove: aclocal /usr/pkg-config-0.25/share/aclocal --install

7.[root@localhost src]# ./autogen.sh

which: no gtkdocize in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

*** no gtk-doc found, please install it ***

8.[root@localhost src]# libtoolize

-bash: libtoolize: command not found

export path='/path/to/libtool/bin'

linux make命令與makefile檔案

3.語法 最後的實踐 通俗的來講 其實和 shell 指令碼差不多,只不過有一些自己的規則可以讓你使用起來更方便,比如你寫 shell 指令碼的話,只能寫在乙個檔案裡然後執行這個檔案,makefile 可以讓你執行這個裡面的某一條命令。makefile檔案由一系列規則 rules 構成。每條規則的形...

Linux make 整理遇到的坑

整理從什麼都沒有裝到make modules 的過程 在 make menuconfig 時碰見的問題 在終端直接輸入 sudo apt get install flex 在終端直接輸入 sudo apt get install bison y 其它遇到的問題 在終端直接輸入 sudo apt ge...

Linux Make使用的重定向

linux中,指令碼語言環境中,即你用make 即其他一些普通linux命令,比如ls,find等,不同的數字,代表不同的含義 數字含義標準叫法 0標準輸入 stdin standard input 1標準輸出 stdout standard output 2標準錯誤輸出 stderr standa...