欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
用configure建立工具的學(xué)習
介紹:
就是使autoconf,automake,libtool,make很好的配合工作
目標:簡(jiǎn)化可移植程序的開(kāi)發(fā),簡(jiǎn)化以源代碼形式分發(fā)的程序的建立
所需要的工具:autoconf,automake,libtool,gettext,m4,perl
建立:最好在單獨的叫做object directory 里面運行configure,make,make install,這樣有三個(gè)好處,建立過(guò)程中生成的文件不會(huì )使源代碼目錄混亂,刪除建立了的文件時(shí)只要把此目錄直接刪掉就ok,可以在不用目錄下用不同的配置選項建立來(lái)比較
Configure腳本支持很多選項,比如—witch , --enable , --prefix –exec-prefix 用來(lái)確定安裝目錄,--prefix 是機器獨立的文件的安放位置,比如info文件,--exec-prefix 一般是 –prefix 的子目錄,放機器相關(guān)的文件,比如可執行文件,一般情況下—prefix 是/usr/local,而–exec-prefix跟—prefix相同
開(kāi)始:
要寫(xiě)三個(gè)文件,在用合適的工具生成額外的文件
寫(xiě) configure.in:
必須首先寫(xiě)這樣文件,它是autoconf的輸入文件
里面必須寫(xiě)一些對于不同系統不同的的一些測試,比如是否存在某個(gè)特別的頭文件或函數
比如在源代碼中要調用gettimeofday函數,不是所有的系統都支持,于是通過(guò)在此文件中放置`AC_CHECK_FUNCS(gettimeofday)‘,運行configure腳本時(shí),如果gettimeofday函數存在就會(huì )定義宏`HAVE_GETTIMEOFDAY‘,相反,如果沒(méi)有,就不會(huì )定義了,于是可以在源代碼中利用`#ifdef‘來(lái)測試這個(gè)宏是否定義了,就可以知道了這個(gè)函數是否存在了
對于已經(jīng)存在的代碼,可以利用autoscan程序來(lái)標識那些移植問(wèn)題和要做的測試,參看autoscan的文檔http://www.delorie.com/gnu/docs/autoconf/autoconf_4.html
另一個(gè)工具是ifnames,對已存在代碼顯示代碼已經(jīng)在用的所有預處理條件,在http://www.delorie.com/gnu/docs/autoconf/autoconf_5.html
每個(gè)此文件要包含一下宏
`AC_INIT‘    需一個(gè)參數,為包中的文件名,如 `AC_INIT(foo.c)‘
`AC_PREREQ(VERSION)‘  可選,用于指示autoconf的版本
`AM_INIT_AUTOMAKE‘    兩個(gè)參數,包的名字,版本號,如 `AC_INIT(foo.c)‘
`AM_CONFIG_HEADER‘ 標出包含預處理宏的頭文件名,默認為config.h, 我們就可以在源代碼中`#include "config.h"‘了,此項可以可選的指定它的輸入文件,如config.h.in,如 AM_CONFIG_HEADER(config.h:config.in)
`AM_MAINTAINER_MODE‘  `AC_EXEEXT‘  在Cygnus configure腳本中出現
`AC_PROG_CC‘  如果你寫(xiě)C代碼,普通情況下你要用這個(gè)宏了,它定位到要用的C編譯器,沒(méi)有參數,當configure.in文件是用來(lái)對一個(gè)庫,并且是用交叉編譯器編譯時(shí)就不用這個(gè)了
`AC_PROG_CXX‘  編譯C++程序時(shí),跟以上一樣
`AM_PROG_LIBTOOL‘  當編寫(xiě)能夠通過(guò)libtool連接到的共享庫時(shí)要用到,默認下,所有的庫都被編譯成共享庫,要改變默認值,就得在`AM_PROG_LIBTOOL‘之前用`AM_DISABLE_SHARED‘。  Configure選項`--enable-shared‘ and `--disable-shared‘用來(lái)干此事
AC_DEFINE(_GNU_SOURCE)‘  GUN包在其他特性測試前要包含這個(gè),編譯時(shí)這會(huì )定義了宏`_GNU_SOURCE‘,而這個(gè)宏會(huì )引導libc的頭文件提供標準的GNU系統接口包括GNU擴展
`AC_OUTPUT‘  定義輸出文件的清單,如`AC_OUTPUT(Makefile lib/Makefile)‘.
AC開(kāi)頭的宏是autoconf用的,AM開(kāi)頭的是automake或libtool提供的
寫(xiě)Makefile.am:
它是automake的輸入文件
本文件中的automake命令很象Makefile文件中的變量賦值,automake能夠認出特殊變量名來(lái),自動(dòng)添加make規則到輸出
包中可能為每個(gè)目錄都有一個(gè)Makefile.in文件,對于有子目錄的文件,它的本文件中就得有   SUBDIRS = dir dir ...dir就是子目錄名
對每一個(gè)Makefile.in,在configure.in中的AC_OUTPUT宏中必須有相應的Makefile
在Cygnus中的每個(gè)Makefile.am必須有AUTOMAKE_OPTIONS = cygnus,這就使automake變成Cygus模式
當在某個(gè)目錄下要構建一個(gè)程序,那么在這個(gè)目錄中的Makefile.in中要有
bin_PROGRAMS = program和program_SOURCES = file file ...
構建一個(gè)非共享庫,則是
lib_LIBRARIES = libname.a和libname_a_SOURCES = file file ...
構建共享庫的則是
lib_LTLIBRARIES = libname.la和libname_la_SOURCES = file file ...
上面出現在行中的字符串bin和lib不是隨意的,他們參考到特殊的目錄,在configure選項中`--bindir‘ and `--libdir‘指定了的,如果這些沒(méi)指定,就基于`--prefix‘ or `--exec-prefix‘選項了
Makefile.in可能包含會(huì )出現在Makefile中的任何東西,automake還可以支持一些特定變量,比如條件
寫(xiě)acconfig.h::
當是要生成一個(gè)可移植的頭文件時(shí),比如在configure.in中用了AM_CONFIG_HEADER‘宏,那么就要寫(xiě)acconfig.h文件了,它必須包含下列行
* Name of package.  */
#undef PACKAGE

/* Version of package.  */
#undef VERSION
這個(gè)文件的意思不是很能看懂


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
大型項目使用Automake/Autoconf完成編譯配置
自動(dòng)生成Makefile的詳細過(guò)程
Autoconf和Automake,自動(dòng)生成Makefile
autoconf、automake工具組使用簡(jiǎn)單介紹
Linux中的configure,make,make install到底在做些什么
!!!使用autotools建立Makefile
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久