linux下自動產生c語言makefile操作步驟

來源:互聯網
上載者:User

  寫完c語言代碼要部署到別的機器上,一個makefile檔案是必不可少的,make命令編譯c程式確實很方面,而makefile手動寫 由於文法複雜 而且不同於進階語言,所以手動寫出可正常使用的makefile成本太高,下面就介紹一下如何運用autoconf和automake兩個開源工具自動產生makefile

 

  1.建立一個簡單的c程式檔案 main.c

  內容如下:

  1 #include <stdio.h>
  2 int main()
  3 {
  4 printf("auto create makefile! ");
  5 return 0;
  6 }

  2.在shell下運行autosan命令來產生autoscan.log  configure.scan兩個檔案

  3.重新命名configure.scan為configure.in (mv configure.scan configure.in)

  4.修改configure.in 為符合自己條件的檔案

     自動產生修改前的內容為:

# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_OUTPUT

修改後的為:

# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

#確保使用的是足夠新的Autoconf版本。如果用於建立configure的Autoconf的版本比version 要早,就在標準>錯誤輸出列印一條錯誤訊息並不會建立configure。
AC_PREREQ([2.69])

#初始化,定義軟體的基本資料,包括設定包的全稱,版本號碼以及報告BUG時需要用的郵箱地址
AC_INIT([main], [1.0], [zhanghaozheng@jiehun.com.cn])

#用來偵測所指定的源碼檔案是否存在,來確定源碼目錄的有效性
AC_CONFIG_SRCDIR([main.c])

#用於產生config.h檔案,以便autoheader使用
AC_CONFIG_HEADERS([config.h])

#添加宏AM_INIT_AUTOMAKE, 它是automake所必備的宏,也同前面一樣,PACKAGE是所要產生軟體套件的名稱,VERSION是版本編號。
AM_INIT_AUTOMAKE(main,1.0)

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

#建立輸出檔案。在`configure.in'的末尾調用本宏一次。
AC_OUTPUT([Makefile])

  5.運行aclocal命令 產生  aclocal.m4  autom4te.cache兩個檔案

  6.運行autoconf產生configure shell檔案

  7.運行autoheader產生config.h.in檔案

  8.下面開始準備運行automake命令產生makefile,不過在此之前要先寫一個automake所需要的設定檔 Makefile.am

  內容為:

#automake提供了三種軟體等級:foreign、gnu和gnits,讓用 戶選擇採用,預設等級為gnu。在本例使用foreign等級,它只檢測必須的檔案
AUTOMAKE_OPTIONS=foreign
#定義要產生的執行檔案名稱。如果要產生多個執行檔案,每個檔案名稱用空格隔開
bin_PROGRAMS=main
#main_SOURCES定義“main”這個執行程式所需要的原始檔案。如果”main”這個程式是由多個原始檔案所產生的,
則必須把它所用到的 所有原 始檔案都列出來,並用空格隔開。
main_SOURCES=main.c

  9.使用automake對其產生“configure.in”檔案,在這裡使用選項“—adding-missing”可以讓automake自動添加有一些必需的指令檔。運行 automake --add-missing

運行結果:

[work@zhz study_c]$ automake --add-missing
configure.in:17: installing `./install-sh'
configure.in:17: installing `./missing'
Makefile.am: installing `./depcomp'

10.運行configure ./configure 產生Makefile檔案供make使用

11.運行make命令 產生main可執行檔 ./main 執行此檔案輸出結果

[work@zhz study_c]$ ./main
auto create makefile!

12.大功告成,以後不用再對這些檔案感到莫名其妙了。開源的世界就是強大。

 

 

 

 

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.