婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用autoconf生成Makefile并編譯工程的步驟

使用autoconf生成Makefile并編譯工程的步驟

熱門標簽:菏澤crm外呼系統價格 信陽銷售外呼系統招商 如何在各種地圖標注自己的地址 物超所值的400電話申請 營銷電銷機器人招商 coreldraw地圖標注 遼寧電銷平臺外呼系統軟件 百應電銷機器人靠譜嗎 申請400電話號碼多少錢

前言

在Linux下,編譯和鏈接需要用Makefile,而寫好一個Makefile可不容易,寫出一個規范的Makefile更是麻煩。我們可以利用autoconf來生成一個Makefile,尤其在大型工程里,能省去很多麻煩。

這里我會用一個工程來說明怎么做,有一些步驟不是必須的,但是如果你看不出來哪些步驟不是必須的,最好跟著一步步走,因為某些步驟省略了,代碼也需要做出相應修改(如修改路徑等)。

步驟

首先安裝autoconf

sudo apt-get install autoconf

新建一個項目文件夾(例如:joy)

mkdir joy

cd joy

在里面新建兩個文件夾 lib 和 src ,用于放工程的庫文件和源文件。

mkdir lib

mkdir src

如下圖所示:

進入lib文件夾,新建一個頭文件,如:haha.h,隨便聲明個函數吧。

cd lib

gedit haha.h

//haha.h
#include <stdio.h>
void printhaha();

進入src文件夾,新建一個C文件,如:haha.c,實現頭文件的函數;新建一個C文件,如:main_code.c,編寫主函數。

cd ../src

gedit haha.c

//haha.c
#include "../lib/haha.h"
void printhaha()
{
  printf("haha\n");
}
//main_code.c
#include "../lib/haha.h"
void main()
{
  printhaha();
}

回到joy文件夾下,我們的工程文件都已經寫好了

cd ..

運行autoscan生成configure.scan

autoscan

編輯configure.scan

gedit configure.scan

編輯之前的文件是這樣的

#編輯之前的原始文件
#                        -*- 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([src/haha.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

前綴AC指的是 AutoConf
AC_PREREQ不用管
AC_INIT里面填【包名】【版本】【BUG提交地址 也就是你的郵箱】
AC_CONFIG_SRCDIR里填源文件路徑下的任意一個文件名,autoconf通過檢測這個文件是否存在,判斷這個路徑是否正確,一般不用管
AC_CONFIG_HEADERS不用管
插入下面這句,automake階段需要,否則會報錯
AM_INIT_AUTOMAKE
前綴AM指的是 AutoMake
最后的AC_OUTPUT,改為AC_OUTPUT(Makefile)
修改完之后的文件如下所示:

#修改后的文件
#                        -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT(hhh, 1.0, idontknow@666.com)
AC_CONFIG_SRCDIR([src/haha.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE  
# 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(Makefile)

保存,并將configure.scan重命名為configure.ac

新建Makefile.am

gedit Makefile.am

輸入以下代碼

AUTOMAKE_OPTIONS= \

  foreign \

  subdir-objects
bin_PROGRAMS=test_prj 
test_prj_SOURCES= \

  lib/haha.h \

  src/haha.c \

  src/main_code.c

AUTOMAKE_OPTIONS后面是automake的執行選項,用空格隔開;
foreign指的是只檢測必須的文件;
subdir-objects指的是編譯生成的.o文件可以放在子路徑(跟源文件放一起),沒有這個選項的話,所有.o文件都會放在工程根目錄下;
bin_PROGRAMS 后面的名字是 生成的可執行二進制文件名
可以有多個 bin_PROGRAMS ,但每個 bin_PROGRAMS 都需要有相對應的 xxx_SOURCES ;
xxx_SOURCES 是 可執行文件xxx的依賴項,包括頭文件,源文件等

用aclocal生成aclocal.m4文件

aclocal

用autoconf生成configure文件

autoconf

用autoheader生成config.h.in

autoheader

用automake生成Makefile.in,需要加上 –add-missing使其自動加上缺省文件

automake --add-missing

然后我們這個軟件就做好了,可以整個包拿去上傳github或者開源論壇了。

別人下載了我們的源碼包之后怎么編譯鏈接可執行文件呢?或者說我們怎么編譯鏈接我們的可執行文件呢?

以下是源碼安裝的一般步驟,也是我們編譯鏈接的步驟

首先生成Makefile

./configure

然后make

make

現在我們可以看見,可執行文件 test_prj 已經被生成出來了

運行一下,結果如下:

結果是正確的。

進入src目錄下,我們發現多了兩個文件


這就是AUTOMAKE_OPTIONS里subdir-objects的作用,少了這句話,這兩個.o文件就會出現在你的根目錄下。如果很不幸你的工程比較大,有同名文件的話,那就可能出現很嚴重的后果了,所以這句話建議加上。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

標簽:江西 江門 玉樹 泰安 湖北 內江 瀘州 廈門

巨人網絡通訊聲明:本文標題《使用autoconf生成Makefile并編譯工程的步驟》,本文關鍵詞  使用,autoconf,生成,Makefile,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用autoconf生成Makefile并編譯工程的步驟》相關的同類信息!
  • 本頁收集關于使用autoconf生成Makefile并編譯工程的步驟的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产成人av一区二区三区在线观看| 国产91综合一区在线观看| 久久久久久日产精品| 日韩一区二区三区观看| 成人免费黄色在线| 麻豆视频一区二区| 久久久无码精品亚洲日韩按摩| 欧美日韩成人综合| 99re热这里只有精品免费视频| 国产成a人亚洲| 成人综合婷婷国产精品久久免费| 国产二区国产一区在线观看| 国产亚洲一区二区三区在线观看| 国产亚洲精品久| 韩国三级在线一区| 国产精品资源在线| 北岛玲一区二区三区四区| 色欧美乱欧美15图片| 成人av资源在线观看| 美女在线视频一区| 国产麻豆精品在线| 国产又粗又猛又爽又黄91精品| 激情五月婷婷综合| 成人久久18免费网站麻豆 | 欧美疯狂做受xxxx富婆| 蜜桃久久久久久久| 成人免费看片app下载| 欧美日韩久久一区| 亚洲国产精品v| 亚洲一级二级三级在线免费观看| 蜜桃在线一区二区三区| 成人的网站免费观看| 欧美日韩不卡视频| 久久久噜噜噜久久人人看| 综合亚洲深深色噜噜狠狠网站| 精品国产成人系列| 亚洲黄色在线视频| 成人教育av在线| 国产日韩一级二级三级| 国产专区综合网| 在线影视一区二区三区| 中文字幕亚洲一区二区av在线| 五月婷婷激情综合| 美女爽到高潮91| 欧美日韩精品一区二区三区 | 欧美精品丝袜中出| 中文字幕一区二区三区蜜月 | 亚洲三级久久久| 麻豆免费看一区二区三区| 毛片不卡一区二区| av男人天堂一区| 日韩欧美国产系列| 亚洲综合在线免费观看| 精品一二三四区| 欧美在线色视频| 日韩三级精品电影久久久| 亚洲国产aⅴ成人精品无吗| 国产剧情一区二区| 久久精品国产网站| 欧美探花视频资源| 中文字幕一区不卡| a美女胸又www黄视频久久| 国产午夜亚洲精品理论片色戒| 国产尤物一区二区在线| 欧美精品日韩精品| 欧美激情综合五月色丁香小说| 免费在线看一区| av在线综合网| 亚洲乱码中文字幕| 日日欢夜夜爽一区| 欧美一级欧美三级在线观看 | 国产乱码精品一区二区三区av| 日韩视频在线一区二区| 一区二区三区免费| 欧美日韩久久一区| 午夜视频久久久久久| 欧美精三区欧美精三区| 国产精品女同一区二区三区| 精品久久一区二区三区| 丝袜a∨在线一区二区三区不卡| a美女胸又www黄视频久久| 91视频com| 欧美在线一二三| 亚洲成人在线网站| 欧美怡红院视频| 亚洲欧美另类久久久精品| 色综合咪咪久久| 一区二区三区在线视频观看| 99精品视频在线免费观看| 国产精品久久久久久久久晋中| 激情图片小说一区| 精品国产网站在线观看| 国产aⅴ精品一区二区三区色成熟| 欧美一卡在线观看| 国产一区二区不卡| 国产999精品久久| 成人免费视频免费观看| 国产欧美综合在线观看第十页| 国产精品77777| 日韩欧美亚洲一区二区| 精品在线免费观看| 中文字幕成人av| 91亚洲精品一区二区乱码| 亚洲精品中文在线影院| 91精品国产入口| 国产精品亚洲第一区在线暖暖韩国| 中文字幕av一区二区三区高| 一色桃子久久精品亚洲| 欧美日韩精品欧美日韩精品一| 中文字幕日本乱码精品影院| 日韩一区二区三区观看| 日韩影院精彩在线| 国产精品美女久久久久久久久 | 99精品视频一区二区三区| 午夜伊人狠狠久久| 国产欧美日韩视频在线观看| 日本丰满少妇一区二区三区| 狠狠色狠狠色合久久伊人| 国产精品少妇自拍| 日韩小视频在线观看专区| 国产高清在线观看免费不卡| 久久国产精品免费| 国产精品久久毛片| 色999日韩国产欧美一区二区| 日本视频一区二区| 国产午夜精品福利| 欧美一区二区三区在线电影| 国产成人三级在线观看| 亚洲第一成人在线| 日韩一区二区精品葵司在线| 国产99久久久久久免费看农村| 亚洲一区二区综合| 洋洋成人永久网站入口| 欧美男男青年gay1069videost| 香蕉久久一区二区不卡无毒影院| 日韩视频免费观看高清在线视频| 成人午夜电影网站| 麻豆91在线观看| 亚洲一区在线观看免费观看电影高清 | 婷婷成人激情在线网| 欧美色图一区二区三区| 国产精品亚洲视频| 国产在线精品一区二区三区不卡| 亚洲免费毛片网站| 成人精品视频一区二区三区| 亚洲成人午夜电影| 337p亚洲精品色噜噜噜| 91精品一区二区三区久久久久久| 91在线国产观看| 国产91在线观看| 专区另类欧美日韩| 国产精品久久久久久久岛一牛影视| 在线播放一区二区三区| 欧美亚洲一区二区在线观看| 国产在线视视频有精品| 成人国产精品免费观看| 日韩国产欧美三级| 亚洲国产日韩精品| 亚洲免费毛片网站| 中文字幕精品一区| 亚洲欧美中日韩| 6080午夜不卡| 色综合天天综合色综合av| 国产999精品久久| 国产精品亚洲综合一区在线观看| 国产在线精品免费av| 亚洲午夜激情av| 香蕉成人伊视频在线观看| 亚洲国产一区二区a毛片| 久久精品久久精品| 日韩1区2区3区| 麻豆国产精品一区二区三区| 偷拍一区二区三区| 秋霞av亚洲一区二区三| 丝袜亚洲另类欧美| 日韩国产在线一| 日韩精品一二三| 日av在线不卡| 久久国产欧美日韩精品| 国内精品久久久久影院薰衣草| 国产精品视频麻豆| wwww国产精品欧美| 久久久美女艺术照精彩视频福利播放| 亚洲精品一区在线观看| 国产亚洲欧洲一区高清在线观看| 欧美精品aⅴ在线视频| 欧美一级黄色大片| 久久色.com| 亚洲视频在线一区观看| 成人h动漫精品| 琪琪一区二区三区| 极品美女销魂一区二区三区免费| 国产成人精品一区二区三区网站观看| 色综合久久久久久久久久久| 色欧美日韩亚洲| 宅男在线国产精品| 亚洲国产精品成人综合| 亚洲一区二区三区在线| 亚洲自拍欧美精品| 激情av综合网|