在LINUX下,不管你是32位元,64位元的作業系統,甚至是ARM架構,或其他架構的電腦/筆電,
從源代碼裝套件,裝程式庫,幾乎都是統一的3個指令,
./configure
make
sudo make install
有時候./configure的過程會很很久,會一直偵測系統的特性,或相依套件,這時候筆者很好奇,這些指令稿是怎麼產生的,
怎麼可以執行數百個檢查?
書上,先秀了
一個超級簡單的範例:
autoscan
sed -e 's/FULL-PACKAGE-NAME/hello/' \
-e 's/VERSION/1/'
\
-e 's|BUG-REPORT-ADDRESS|/dev/null|' \
-e '10i\
AM_INIT_AUTOMAKE' \
< configure.scan > configure.ac
touch NEWS README AUTHORS ChangeLog
autoreconf -iv
./configure
make distcheck
產生了一個4659行的configure檔
timloo@timloo-Aspire-8530:~/auto_tools/autodemo$ wc -l *
1039 aclocal.m4
0 AUTHORS
wc: autom4te.cache: 是個目錄
0 autom4te.cache
0 autoscan.log
0 ChangeLog
25 config.h.in
4659 configure
而程式只有2行,
#include <stdio.h>
int main(){ printf("HI.\n);}
額外的補充:
$ if [-e autodemo]; then rm -r autodemo;fi
[-e:無此指令
[和 -e 之間要有空白
$ if [ -e autodemo]; then rm -r autodemo;fi
bash: [: missing `]'
] 和裏面的句子間要有空白。
而
$ cat > hello.c <<\
"--------------------"
#include <stdio.h>int main(){ printf("HI.\n);}
> ------------------- (長度不一致,沒法結束編輯程式)
所以本書作者喜歡用cat , sed 來做簡單的編輯器,其實我不太會用,我還是開gVim來編輯檔案。
touch 是產生沒內容有檔名的檔案。