linux 下的 autotools 使用

2021-08-25 14:46:08 字數 2227 閱讀 3719

在linux環境下,當拿到乙份原始碼,安裝過程通常簡單如下:

./configure

make

make install

c project 原始碼中通常有個configure程式,確切來說他是乙個shell指令碼。他的作用就是檢測當前作業系統和一些執行環境(比如依賴和編譯器等),然後根據這些資訊生成makefile檔案。

一般專案中不會有makefile,通過configure結合makefile.in檔案 生成makefile

有了makefile,就可以make && make install了。

如果自己的c專案,如何構建configure指令碼和makefile.in呢?

答案是使用autoconfautomake工具。

首先 寫乙個 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...