在linux環境下,當拿到乙份原始碼,安裝過程通常簡單如下:
./configure
make
make install
c project 原始碼中通常有個configure
程式,確切來說他是乙個shell指令碼。他的作用就是檢測當前作業系統和一些執行環境(比如依賴和編譯器等),然後根據這些資訊生成makefile
檔案。
一般專案中不會有makefile
,通過configure
結合makefile.in
檔案 生成makefile
。
有了makefile
,就可以make && make install
了。
如果自己的c
專案,如何構建configure
指令碼和makefile.in
呢?
答案是使用autoconf
和automake
工具。
首先 寫乙個 m4sh 格式的檔案configure.ac
:
ac_init([helloworld], [0.1], [[email protected]])
am_init_automake
ac_prog_cc
ac_config_files([makefile])
ac_output
再寫乙個makefile.am
檔案:
automake_options = foreign
bin_programs = helloworld
helloworld_sources = main.c
接下來,先使用aclocal
工具(aclocal
會自動掃瞄configure.ac
),生成aclocal.m4
檔案,這個檔案定義了一些 macro 以便後面 automake 工具使用。
命令列輸入:
aclocal
autoconf
根據configure.ac
檔案生成configure
指令碼。
在命令列裡輸入:
autoconf
automake
根據makefile.am
檔案生成makefile.in
檔案。
在命令列裡輸入:
automake --add-missing
接下來就可以通過:
./configure
make
make install
tmp.c
#include
#include
#include
void* threadfunc(void* arg)
int main(int argc, char* argv)
void* s;
int pj = pthread_join(t, &s);
if (pj != 0)
return
0;}
configure.ac
ac_init([helloworld], [0.1], [[email protected]])
am_init_automake
ac_prog_cc
ac_check_lib(pthread, pthread_create)
ac_config_files([makefile])
ac_output
makefile.am
automake_options = foreign
bin_programs = helloworld
helloworld_sources = tmp.c
Linux下ZendOptimizer的安裝與配置
內容 在裝的好的red hat linux 9 apache 2.0.55 mysql 5.1.6 php 5.1.2後,接下來就是安裝linux下的php加速器zendoptimizer 2.6.2了。自己編譯 php 後,zend optimizer 2.6.2 需要自己設定一下,請參照以下步驟...
Linux下的命令
管理員 普通使用者 pwd 顯示當前檔案全路徑 date 顯示系統當前日期和時間 who 顯示當前已登入的所有使用者名稱 cal 顯示日曆 uname r m,i,v 顯示當前系統作業系統資訊 wc l 行數,w字數,c位元組數 統計字數 clear 清屏 檔案操作touch 新建檔案mkdir 新...
linux 下 奇怪的
最近在做乙個從hp ux移行到linux 上面的專案,遇到乙個命令 hp ux date y m d h m s read sys date sys time dev null 2 1 但是這個命令在linux 下,就達不到預期的結果 之後問了高手,才得到解決辦法 linux read sys da...