青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

isware

[轉]linux c 一個autotools的最簡單例子

  1、準備:
     

   需要工具autoscan aclocal autoheader automake autoconf make 等工具.


  2、測試程序編寫:
     


      建立目錄:mkdir include src
     
      編寫程序:include/str.h
      
#include <stdio.h>

int str(char *string);

      編寫程序:src/str.c
      
#include "str.h"
//print string
int str(char *string){
        printf(
"\n----PRINT STRING----\n\"%s\"\n",string);
        
return 0;
}


//interface of this program
int main(int argc , char **argv){
        
char str_read[1024];
        printf(
"Please INPUT something end by [ENTER]\n");
        scanf(
"%s",str_read);
        
return str(str_read );
}


3、生成configure.in
   

configure.in是automake的輸入文件,所以必須先生成該文件。
    執行命令:
[root@localhost str]# ls
include  src
[root
@localhost str]# autoscan
autom4te: configure.ac: no such file or directory
autoscan
: /usr/bin/autom4te failed with exit status: 1
[root
@localhost str]# ls
autoscan.log  configure.scan  include  src
[root
@localhost str]# cp configure.scan configure.in 

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


AC_PREREQ(
2.59)
AC_INIT(FULL
-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([include
/str.h])
AC_CONFIG_HEADER([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_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)

AC_INIT(str,0.0.1, [bug@sounos.org])

FULL-PACKAGE-NAME 為程序名稱,VERSION為當前版本, BUG-REPORT-ADDRESS為bug匯報地址
    添加AM_INIT_AUTOMAKE
    添加AC_CONFIG_FILES([Makefile])
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.


AC_PREREQ(
2.59)
#AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_INIT(str, 0.0.1, [bug@sounos.org])
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([include
/str.h])
AC_CONFIG_HEADER([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_CONFIG_FILES([Makefile])
AC_OUTPUT

4、執行aclocal

[root@localhost str]# aclocal
/usr/share/aclocal/libfame.m4:6: warning: underquoted definition of AM_PATH_LIBFAME
  run info 
'(automake)Extending aclocal'
  or see http
://sources.redhat.com/automake/automake.html#Extending-aclocal

5、制作Makefile.am


[root@localhost str]# cat Makefile.am
#Makefile.am

bin_PROGRAMS    = str
str_SOURCES     
= include/str.h src/str.c
str_CPPFLAGS    
= -I include/

6、autoheader

[root@localhost str]# autoheader

7、automake必須文件:


    *  install-sh
    
* missing
    
* INSTALL
    
* NEWS
    
* README
    
* AUTHORS
    
* ChangeLog
    
* COPYING
    
* depcomp 
其中
    * install-sh
    
* missing
    
* INSTALL
    
* COPYING
    
* depcomp 
可以通過automake -a選項自動生成,所以這里只需要建立如下文件
[root@localhost str]# touch NEWS README AUTHORS ChangeLog

8、執行automake


[root@localhost str]# automake -a
configure.ac: installing `./install-sh'
configure.ac: installing `./missing
'
Makefile
.am: installing `./INSTALL'
Makefile.am: installing `./COPYING
'
Makefile
.am: installing `./compile'
Makefile.am: installing `./depcomp
'

9、autoconf

[root@localhost str]# autoconf
[root@localhost str]# ls
aclocal.m4      autoscan.log  config.h.in   configure.scan  include     Makefile.am  NEWS
AUTHORS         ChangeLog     configure     COPYING         INSTALL     Makefile
.in  README
autom4te
.cache  compile       configure.ac  depcomp         install-sh  missing      src

10、執行測試:


      
執行./configure
[root@localhost str]# ./configure --prefix=/u
checking for a BSD-compatible install /usr/bin/install -c
checking whether build environment is sane
 yes
checking 
for gawk gawk
checking whether make sets $(MAKE)
 yes
checking 
for gcc gcc
checking 
for C compiler default output file name a.out
checking whether the C compiler works
 yes
checking whether we are cross compiling
 no
checking 
for suffix of executables
checking 
for suffix of object files o
checking whether we are using the GNU C compiler
 yes
checking whether gcc accepts 
-g yes
checking 
for gcc option to accept ANSI C none needed
checking 
for style of include used by make GNU
checking dependency style of gcc
 gcc3
configure
: creating ./config.status
config
.status: creating Makefile
config
.status: creating config.h
config
.status: config.h is unchanged
config
.status: executing depfiles commands
執行 make
[root@localhost str]# make
make  all-am
make[
1]: Entering directory `/data/devel/c/str'
if gcc -DHAVE_CONFIG_H -I. -I. -I.  -I include/   -g -O2 -MT str-str.o -MD -MP -MF ".deps/str-str.Tpo" -c -o str-str.o `test -f 
'src/str.c' || echo './'`src/str.c; \
then mv -f ".deps/str-str.Tpo" ".deps/str-str.Po"; else rm -f ".deps/str-str.Tpo"; exit 1; fi
gcc  -g -O2   -o str  str-str.o
make[1]: Leaving directory `/data/devel/c/str
'
執行 make install
[root@localhost str]# make install
make[1]: Entering directory `/data/devel/c/str'
test -z "/u/bin" || mkdir -p -- "/u/bin"
  /usr/bin/install -c 
'str' '/u/bin/str'
make[1]: Nothing to be done for `install-data-am
'.
make[
1]: Leaving directory `/data/devel/c/str'

11、測試程序:

[root@localhost str]# /u/bin/str
Please INPUT something end by [ENTER]
abcksdhfklsdklfdjlkfd

----PRINT STRING----
"abcksdhfklsdklfdjlkfd"

到此結束!!



--------------------

添加測試包:
[root@localhost str]# make dist-gzip
{ test ! -d str-0.0.1 || { find str-0.0.1 -type d ! -perm -200 -exec chmod u+w {} ';' && rm -fr str-0.0.1; }; }
mkdir str-0.0.1
find str
-0.0.1 -type d ! -perm -777 -exec chmod a+rwx {} \-\
  
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \-\
  
! -type d ! -perm -400 -exec chmod a+r {} \-\
  
! -type d ! -perm -444 -exec /bin/sh /data/devel/c/str/install-sh --m a+r {} {} \\
|| chmod -R a+r str-0.0.1
tardir
=str-0.0.1 && /bin/sh /data/devel/c/str/missing --run tar chof - "$tardir" | GZIP=--best gzip ->str-0.0.1.tar.gz
{ test 
! -d str-0.0.1 || { find str-0.0.1 -type d ! -perm -200 -exec chmod u+w {} ';' && rm -fr str-0.0.1; }; }

添加一個支持子目錄、靜態庫、自定義configure選項的包

支持子目錄Makefile.am 選項 SUBDIR =
#Automake interface 
SUBDIRS = src
支持靜態庫Makefile.am
EXTRA_DIST  用于添加除源碼外的文件到dist包
#Automake interface
bin_PROGRAMS = hello
hello_SOURCES 
= hello.c lib/sbase.h
hello_CPPFLAGS 
= -I lib
hello_LDFLAGS 
= -static lib/libsbase.a
EXTRA_DIST 
= lib/libsbase.a
configure.in
AC_PREREQ(2.59)
#AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_INIT(hello, 0.0.1, [SounOS@gmail.com])
#AM 聲明
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([src
/hello.c])
AC_CONFIG_HEADER([config
.h])

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

AC_HEADER_STDC
AC_CHECK_HEADERS([stdint
.h stdlib.h sys/socket.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T

#用于自定義configure 選項,見acinclude.am
AC_CHECK_EXTRA_OPTIONS
# Checks for library functions.

AC_CONFIG_FILES([Makefile
                 src
/Makefile])
AC_OUTPUT

posted on 2011-05-31 11:42 艾斯維亞 閱讀(319) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区三区免费观看| 亚洲精品男同| 欧美一二三视频| 亚洲一区二区三区精品动漫| 欧美日韩你懂的| 亚洲一级黄色片| 亚洲欧美制服中文字幕| 国产一区二区三区av电影 | 免费在线播放第一区高清av| 在线观看三级视频欧美| 欧美成人福利视频| 欧美日韩不卡合集视频| 亚洲一线二线三线久久久| 亚洲福利av| 亚洲国产成人在线| 国产精品a级| 久久国产日韩欧美| 你懂的网址国产 欧美| 亚洲校园激情| 久久精品网址| 正在播放日韩| 亚洲综合精品一区二区| 影音先锋另类| 亚洲特色特黄| 亚洲二区免费| 亚洲一区二区三区高清| 精品电影一区| 亚洲天堂网在线观看| 亚洲精品久久久久| 国产精品丝袜xxxxxxx| 欧美高清自拍一区| 国产女主播一区| 亚洲国产精品一区制服丝袜| 国产精品日日摸夜夜添夜夜av | 在线观看成人av电影| 99re6这里只有精品| 影音先锋亚洲一区| 亚洲男人的天堂在线aⅴ视频| 亚洲第一黄色| 欧美在线影院| 亚洲一区二区三区中文字幕| 久热精品视频在线免费观看| 欧美影院视频| 欧美精品自拍| 亚洲国产精品www| 国内外成人在线| 亚洲已满18点击进入久久| 亚洲精品视频一区| 久久免费一区| 国产欧美日韩视频一区二区三区| 免费人成网站在线观看欧美高清| 欧美日韩在线观看视频| 91久久综合亚洲鲁鲁五月天| 激情久久影院| 午夜欧美大尺度福利影院在线看| 亚洲伊人一本大道中文字幕| 欧美久久成人| 亚洲精品久久久一区二区三区| 影音先锋亚洲一区| 久久婷婷丁香| 免费黄网站欧美| 亚洲国产成人一区| 久久综合九色综合欧美就去吻| 久久久噜噜噜久久中文字幕色伊伊| 国产精品入口麻豆原神| 中文欧美在线视频| 午夜激情综合网| 国产乱肥老妇国产一区二 | 亚洲精品视频中文字幕| 91久久线看在观草草青青| 久热精品在线视频| 女生裸体视频一区二区三区| 影音国产精品| 欧美成人69| 亚洲人成网站在线观看播放| 一区二区三区久久精品| 欧美日韩三级在线| 99国产一区二区三精品乱码| 亚洲制服av| 国产亚洲精品aa| 久久久久久久激情视频| 欧美黄色一区| 亚洲少妇在线| 国产日韩免费| 美腿丝袜亚洲色图| 夜夜爽www精品| 久久精品99久久香蕉国产色戒| 国内精品久久久久久影视8| 久久亚洲电影| 日韩一区二区精品视频| 欧美一区二区国产| 亚洲国产高清在线| 欧美三区在线视频| 亚洲欧美综合精品久久成人| 欧美aⅴ99久久黑人专区| 一本色道久久综合亚洲二区三区| 国产精品久久久久高潮| 久久嫩草精品久久久精品| 亚洲精品久久久一区二区三区| 午夜欧美精品| 亚洲欧洲日产国产综合网| 国产精品久久久久毛片软件 | 亚洲美女黄色| 久久久www成人免费毛片麻豆| 亚洲国产片色| 国产精品综合| 欧美激情中文字幕乱码免费| 亚洲女同同性videoxma| 欧美激情欧美激情在线五月| 亚洲性夜色噜噜噜7777| 在线日本成人| 国产精品综合| 欧美三级视频| 美女久久一区| 久久国产精品第一页 | 久久成人av少妇免费| 亚洲人成在线播放网站岛国| 国产精品欧美日韩一区二区| 欧美高清在线| 久久久精彩视频| 亚洲欧美日韩精品在线| 亚洲精品一区二区三区婷婷月| 久久人体大胆视频| 性久久久久久久| 亚洲午夜女主播在线直播| 亚洲成色777777在线观看影院| 国产欧美日韩一区二区三区在线观看| 欧美极品一区二区三区| 男同欧美伦乱| 久久综合久久美利坚合众国| 久久成人精品| 欧美在线二区| 欧美亚洲综合另类| 亚洲综合大片69999| 一区二区免费在线观看| 亚洲精品综合精品自拍| 最新日韩在线| 亚洲精品国产视频| 亚洲黄色影片| 亚洲人成免费| 91久久精品国产| 亚洲精品一区久久久久久| 欧美激情精品久久久久| 欧美国产综合一区二区| 欧美大片一区| 亚洲欧洲日韩综合二区| 亚洲人成久久| 一区二区激情| 亚洲无限av看| 欧美亚洲色图校园春色| 欧美影院精品一区| 久久精品视频导航| 老色批av在线精品| 免费成人网www| 欧美日韩久久精品| 欧美亚洲第一区| 国产一二精品视频| 在线国产日韩| 一区二区三区高清在线观看| 亚洲一区二区在线播放| 欧美一区三区三区高中清蜜桃| 欧美中文字幕视频在线观看| 久久噜噜亚洲综合| 亚洲高清一区二区三区| 日韩特黄影片| 欧美一级夜夜爽| 免费看亚洲片| 国产精品免费网站| 一区免费观看视频| 99国产欧美久久久精品| 亚洲欧美中文另类| 麻豆精品精华液| 亚洲美女少妇无套啪啪呻吟| 亚洲免费影院| 免费观看成人www动漫视频| 欧美日韩精品一区| 国产在线拍偷自揄拍精品| 亚洲精品1234| 午夜一区在线| 亚洲黄网站在线观看| 亚洲欧美日韩精品久久久久| 欧美 日韩 国产精品免费观看| 欧美午夜精彩| 最新日韩在线| 欧美一区二区三区视频在线观看| 欧美成人中文| 香港久久久电影| 欧美另类videos死尸| 国产亚洲精品久久久久婷婷瑜伽| 亚洲日本视频| 久久久久久色| 亚洲一区二区三区777| 久热精品视频在线观看一区| 国产精品欧美日韩| 一本到高清视频免费精品| 久久蜜桃资源一区二区老牛 | 久久久精品日韩欧美| 日韩视频在线一区| 久久夜色精品| 国产主播一区二区|