<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
      test -z "$LDFLAGS" && LDFLAGS="-I/usr/include" AC_SUBST(LBFLAGS)
      dnl Tests for UNIX variants
      dnl
      AC_CANONICAL_HOST
      AC_CANONICAL_HOST報告從GNU觀點看到的宿主機類型.它輸出cpu-company-system形式的系統 名稱.例如,筆者的一個系統上,AC_CANONICAL_HOST報告其類型為i686-unknown-linux.
      dnl Tests for programs
      dnl
      AC_PROG_CC
      AC_PROG_LEX
      AC_PROG_AWK
      AC_PROG_YACC
      AC_CHECK_PROG(SHELL,bash,/bin/bash,/bin/sh)
    這一代碼段按順序判斷并設置了編譯器,詞法分析器lexer,awk,yacc以及本地shell.
      dnl Tests for libraries
      dnl
      AC_CHECK_LIB(socket, socket)
      AC_CHECK_LIB(resolv,res_init,[echo"res_init() not in libresolv"],
      [echo "res_init() found int libresolv"])
    "Test for libraries"的這一代碼段展示了怎么為autoconf的宏編寫自定義的命令.
      dnl Tests for header files
      dnl
      AC_CHECK_HEADER(killer.h)
      AC_CHECK_HEADERS([resolv.h temio.h curses.h sys/time.h fcntl.h \
      sys/fcntl. memory.h])
      AC_DECL_SYS_SIGLIST
      AC_HEADER_STDC
    以"\"結尾的一行說明了多參數續行的正確方式.前面已經介紹過,使用字符"\"告訴m4和shell需要續行,并且用m4的引用符號把整個參數括起來.
      dnl Tests for typedefs
      dnl
      AC_TYPE_GETGROUPS
      AC_TYPE_SIZE_T
      AC_TYPE_PID_T

      dnl Tests for structures
      AC_HEADER_TIME
      AC_STRUCT_TIMEZONE
      dnl Tests of compiler behavior
      dnl
      AC_C_BIGENDIAN
      AC_C_INLINE
      AC_CHECK_SIZEOF(int, 32)
    AC_C_BIGENDIAN宏將產生一個警告,因為調用AC_TRY_RUN時沒有設置默認值以允許交叉編譯,可以忽略這個警告.
      dnl Tests for library functions
      dnl
      AC_FUNC_GETLOADAVG
      AC_FUNC_MMAP
      AC_FUNC_UTIME_NULL
      AC_FUNC_VFORK
      dnl Tests of system services
      dnl
      AC_SYS_INTERPRETER
      AC_PATH_X
      AC_SYS_RESTARTABLE_SYSCALL
    AC_SYS_RESTARTABLE_SYSCALLS宏將產生一個警告,因為調用AC_TRY_RUN時沒有默認值允許交叉編譯,可以忽略這個警告.
      dnl Tests in this section exercise a few of `autoconf' ''s generic macros
      dnl
      dnl First, let's see if we have a usable void pointer type
      dnl
      AC_MSG_CHECKING(for a usable void pointer type)
    現在情況開始變得有趣起來.基本上,普通宏允許你通過編寫自己的宏對autoconf進行擴展.例如,AC_MSG_CHECKING在屏幕上打印字符串"checking",隨后是一個空格以及傳入的參數
      AC_TRY_COMPILE( [ ],
          [ char *ptr;
          void *xmalloc();
          ptr = (char *) xmalloc(1);
          ],
          [AC_DEFINE(HAVE_VOID_POINTER) AC_MSG_RESULT(usable void pointer] )
    留意AC_TRY_COMPILE宏.autoconf能夠把C代碼嵌入到一個C程序框架中,并把這個程序寫入已生成的configure腳本中,以便在 運行configure時編譯這個程序;然后,configure捕獲編譯器的輸出并查找錯誤.AC_DEFINE (HAVE_VOID_POINTER)產生了一個名為HAVE_VOID_POINTER的預處理器符號(必須將它放置在./acconfig.h中, 因為它并不在其他地方存在).如果編譯成功,configure把"#define HAVE_VOID_POINTER 1"寫入到config.h中并且在屏幕上打印"usable void pointer";如果編譯失敗則在config.h中寫入"/* #undef HAVE_VOID_POINTER */,并顯示"no usable void pointer".在你自己的源代碼文件中,只需按如下的方式測試這個預處理符號:
      #ifdef HAVE_VOID_POINTER
      /* do something */
      #else
      /* do something else */
      #endif
      dnl Now, let's exercises the preprocessor
      dnl
      AC_TRY_CPP(math.h, echo 'found math.h', echo 'no math.h - deep doo doo!)
    如果configure找到了頭文件math.h,它會在屏幕上顯示"found math.h";否則它通知用戶出現了一個問題.
      dnl Next, we test the linker
      dnl
      AC_TRY_LINK([#ifndef HAVE_UNISTD_H
      #include <signal.h>
      #endif],
      [char *ret = *(sys_siglist + 1);],
      [AC_DEFINE(HAVE_SYS_SIGLIST), AC_MSG_RESULT(got sys_siglist)],
      [AC_MSG_RESULT(no sys_siglist)])
    這一段代碼測試連接器.同樣,因為HAVE_SYS_SIGLIST不是一個標準預處理器符合,你必須在./acconfig.h中聲明它.
      dnl Finally, set a default value for a ridiculous type
      dnl
      AC_CHECK_TYPE(short_short_t, unsigned short)
    最后的測試只檢查一種(希望的)不存在C數據類型.如果確實沒有,則將short_short_t定義為unsigned short.讀者可以到config.h中查找與short_short_t相關的#define指令來確認這個測試的結果.
    posted on 2005-08-04 21:17 ivaneeo 閱讀(571) 評論(0)  編輯  收藏 所屬分類: GNU牛力
    主站蜘蛛池模板: 精品亚洲AV无码一区二区三区 | 亚洲av无码潮喷在线观看| 波多野结衣一区二区免费视频| 亚洲欧洲久久av| 亚洲二区在线视频| 国产性生大片免费观看性| 国产高清不卡免费视频| 日本v片免费一区二区三区| 亚洲精品tv久久久久久久久| 亚洲一区在线免费观看| 免费看国产成年无码AV片| 综合亚洲伊人午夜网| 亚洲精品一二三区| 国产无遮挡裸体免费视频在线观看 | 亚洲日韩涩涩成人午夜私人影院| 亚洲天天做日日做天天欢毛片| 亚洲色精品VR一区区三区| 噼里啪啦电影在线观看免费高清 | A级毛片高清免费视频在线播放| 91免费资源网站入口| 国产亚洲高清不卡在线观看| 国产成人AV免费观看| 亚洲日本国产乱码va在线观看| 一个人免费视频观看在线www| 亚洲av午夜福利精品一区| 久热中文字幕在线精品免费| 亚洲αv久久久噜噜噜噜噜| 99精品视频在线视频免费观看| 国产亚洲一区区二区在线| mm1313亚洲国产精品无码试看| 亚洲免费视频网址| 亚洲乱理伦片在线观看中字| 中文字幕av无码无卡免费| 无套内谢孕妇毛片免费看看| 免费涩涩在线视频网| 亚洲Av高清一区二区三区| 无码专区一va亚洲v专区在线| 亚洲av无码专区在线电影天堂| 成人黄动漫画免费网站视频 | 国产在线观看免费视频软件| 亚洲网站免费观看|