婷婷综合国产,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
    色综合久久中文综合久久97| 久久久久久久性| 欧美日韩国产首页| 不卡的电影网站| 久久99精品国产| 麻豆传媒一区二区三区| 亚洲第一搞黄网站| 综合激情成人伊人| 中文字幕欧美激情一区| 国产午夜一区二区三区| 91啪亚洲精品| 91在线国产观看| 色素色在线综合| 日本韩国欧美在线| 日本韩国欧美一区二区三区| 色欧美乱欧美15图片| 欧美综合在线视频| 欧洲人成人精品| 欧美撒尿777hd撒尿| 2022国产精品视频| 亚洲精品大片www| 日一区二区三区| 国产精品一区二区在线观看不卡| 激情深爱一区二区| 91小宝寻花一区二区三区| 成人午夜免费视频| 亚洲一区二区三区在线看| 亚洲精品综合在线| 偷窥少妇高潮呻吟av久久免费| 伊人婷婷欧美激情| 午夜欧美电影在线观看| 久久99精品国产麻豆婷婷| 久久99深爱久久99精品| 免费成人在线影院| 国产精品中文欧美| 国产毛片精品国产一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 色综合网色综合| 色婷婷一区二区| 欧美一区二区三区在线看| 亚洲一二三四区不卡| 一区二区三区不卡视频在线观看| 午夜欧美大尺度福利影院在线看| 亚洲乱码精品一二三四区日韩在线| 婷婷六月综合亚洲| 亚洲欧美日韩在线不卡| 一区二区不卡在线播放| 大白屁股一区二区视频| 欧美亚洲综合在线| 国产精品护士白丝一区av| 蜜臀精品久久久久久蜜臀| 91小视频在线| 一色屋精品亚洲香蕉网站| 久久超级碰视频| 欧美日韩国产高清一区二区| 欧美激情一区在线观看| 丝袜美腿亚洲一区| 91最新地址在线播放| 久久久久久久久久电影| 国产综合色视频| 久久婷婷国产综合精品青草| 日韩精品午夜视频| 欧美一区二区在线播放| 夜夜嗨av一区二区三区网页| 色网站国产精品| 一区二区三区国产精华| 免费在线观看视频一区| 欧美日韩国产高清一区二区| 图片区小说区区亚洲影院| 国产精品另类一区| 国产大片一区二区| 国产精品乱人伦中文| 色天天综合色天天久久| 日本不卡一二三| 久久久久久久久久久电影| 国产精品99精品久久免费| 欧美电视剧在线观看完整版| 国内精品久久久久影院色| 久久久综合精品| 欧美日韩大陆一区二区| 蜜臀精品一区二区三区在线观看| 337p日本欧洲亚洲大胆色噜噜| 免费观看一级特黄欧美大片| 亚洲国产精品国自产拍av| 欧美丝袜自拍制服另类| 亚洲欧洲日产国码二区| 91精品国产综合久久精品图片| 欧美经典三级视频一区二区三区| 不卡的av电影在线观看| 亚洲一区二区三区中文字幕在线| 岛国av在线一区| 国产一区二区三区最好精华液| 亚洲综合网站在线观看| 中文字幕在线观看不卡视频| 日韩欧美亚洲国产另类| 日本乱人伦一区| 欧美一a一片一级一片| 成人av午夜影院| 成人激情视频网站| 日本强好片久久久久久aaa| 一区二区三区高清| 中文字幕一区二区三区视频| 国产欧美一区二区精品婷婷| 久久男人中文字幕资源站| 欧美一级日韩一级| 欧美日韩mp4| 欧美丝袜丝交足nylons| 色呦呦国产精品| 51午夜精品国产| 精品国产网站在线观看| 欧美一区二区女人| 91.成人天堂一区| 精品国产麻豆免费人成网站| 精品国产成人在线影院| 中文字幕乱码亚洲精品一区| 国产精品入口麻豆原神| 一区二区三区精品在线| 蜜臀精品一区二区三区在线观看| 国产又黄又大久久| 在线观看不卡一区| 久久亚洲二区三区| 国产精品久久毛片a| 亚洲成a人v欧美综合天堂下载| 久热成人在线视频| av中文字幕一区| 91精品国产色综合久久不卡蜜臀| 欧美一级理论片| 亚洲综合丁香婷婷六月香| 成人综合婷婷国产精品久久蜜臀 | 欧美一级搡bbbb搡bbbb| 国产精品女同一区二区三区| 亚洲va欧美va人人爽| 成人午夜视频在线| 亚洲天堂福利av| 国产91精品免费| aaa亚洲精品一二三区| 欧美变态tickling挠脚心| 丝袜亚洲精品中文字幕一区| 丰满白嫩尤物一区二区| 成人高清免费观看| 日韩精品91亚洲二区在线观看| 蜜臀av性久久久久av蜜臀妖精| 亚洲一卡二卡三卡四卡无卡久久| 国产成人免费在线观看| 久久综合色天天久久综合图片| 日韩国产欧美一区二区三区| 99久久精品国产观看| 精品国偷自产国产一区| 亚洲国产精品传媒在线观看| 久久成人精品无人区| 国产亚洲成aⅴ人片在线观看| 亚洲国产日韩a在线播放| 欧美精品久久久久久久多人混战| 亚洲午夜激情网站| 欧美午夜精品久久久久久孕妇| 最新国产成人在线观看| 欧美嫩在线观看| 国产在线视频精品一区| 亚洲柠檬福利资源导航| 99免费精品在线| 国产精品一区二区久久不卡| 亚洲国产岛国毛片在线| 欧美日韩一二三| 日韩av不卡一区二区| 亚洲与欧洲av电影| 日韩一区二区三区观看| 成人午夜av在线| 中文字幕欧美日本乱码一线二线| 久久视频一区二区| 欧美一级片在线观看| 色婷婷国产精品| 欧美精品日韩一区| 色综合激情五月| 99久久综合国产精品| 成人中文字幕合集| 欧美综合亚洲图片综合区| 国产91精品露脸国语对白| 青青草原综合久久大伊人精品优势| 人人精品人人爱| 美洲天堂一区二卡三卡四卡视频| 一区二区免费视频| 黑人巨大精品欧美黑白配亚洲| 午夜精品一区二区三区电影天堂| 亚洲欧美日韩中文播放| 亚洲人成影院在线观看| 亚洲卡通欧美制服中文| 国产精品大尺度| 亚洲品质自拍视频| 五月综合激情婷婷六月色窝| 亚洲国产精品精华液网站| 三级精品在线观看| 国产91精品露脸国语对白| 91精品麻豆日日躁夜夜躁| 91麻豆精品久久久久蜜臀| 欧美电影一区二区| 欧美最新大片在线看| 91麻豆精品国产无毒不卡在线观看| 欧美日韩成人综合| 久久色.com| 亚洲一区免费在线观看|