使用automake自动生成makefile(上)

本文详细介绍了如何在Linux环境下使用automake工具自动生成makefile,包括创建目录、编写makefile.am、使用aclocal、autoheader、automake、autoconf等步骤,以及配置文件configure.in的修改和执行make、make install的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用Linux下自动生成makefile的工具: automake, autoconf 生成makefile的一般过程



1.  创建工程目录和各个目录下的makefile.am。工程的名字一般和最终生成应用程序的名字相同。

简单的介绍如何使用automake自动生成Makefile文件

  1. wzb@embedded ~]$ mkdir workspace  
  2. [wzb@embedded ~]$ cd workspace/  
  3. [wzb@embedded workspace]$ ls  
  4. [wzb@embedded workspace]$ mkdir testAutoMake  
  5. [wzb@embedded workspace]$ ls  
  6. testAutoMake  
  7. [wzb@embedded workspace]$ cd testAutoMake/  
  8. [wzb@embedded testAutoMake]$ ls  
  9. [wzb@embedded testAutoMake]$ mkdir src  
  10. [wzb@embedded testAutoMake]$ ls  
  11. src  
  12. [wzb@embedded testAutoMake]$ pwd  
  13. /home/wzb/workspace/testAutoMake  
  14. [wzb@embedded testAutoMake]$ ls  
  15. src  
  16. [wzb@embedded testAutoMake]$ vi makefile.am  
  17. [wzb@embedded testAutoMake]$ cd src  
  18. [wzb@embedded src]$ ls  
  19. [wzb@embedded src]$ vi main.c  
  20. [wzb@embedded src]$ ls  
  21. main.c  
  22. [wzb@embedded src]$ vi main.c  
  23. [wzb@embedded src]$ clear  
  24. [wzb@embedded src]$ ls  
  25. main.c  
  26. [wzb@embedded src]$ vi makefile.am  
  27. [wzb@embedded src]$ clear  
  28. [wzb@embedded src]$ ls  
  29. main.c  makefile.am  
  30. [wzb@embedded src]$ cd ..  
  31. [wzb@embedded testAutoMake]$ ls  
  32. makefile.am  src  
  33. [wzb@embedded testAutoMake]$ pwd  
  34. /home/wzb/workspace/testAutoMake  
  35. [wzb@embedded testAutoMake]$ ls -R  
  36. .:  
  37. makefile.am  src  
  38.   
  39. ./src:  
  40. main.c  makefile.am  
  41. [wzb@embedded testAutoMake]$  
  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. makefile.am  src  
  5. [wzb@embedded testAutoMake]$ cat makefile.am  
  6. SUBDIRS=src  
  7. [wzb@embedded testAutoMake]$ vi makefile.am  
  8. [wzb@embedded testAutoMake]$ cd src  
  9. [wzb@embedded src]$ ls  
  10. main.c  makefile.am  
  11. [wzb@embedded src]$ cat main.c  
  12. #include <stdio.h>  
  13. #include <stdarg.h>  
  14.   
  15. int accumulate(int nr, ...);  
  16.   
  17. int main(int argc, char *argv[]) {  
  18.         int n = 5;  
  19.   
  20.         int result = accumulate(5, 5, 4, 3, 2, 1);  
  21.         printf("%d,\n", result);  
  22.   
  23.   
  24.         printf("test.......makefile ........ok\n");  
  25.   
  26.         return 0;  
  27. }  
  28.   
  29.   
  30. int accumulate(int nr, ...) {  
  31.         int i = 0;  
  32.         int result = 0;  
  33.   
  34.         va_list arg ;  
  35.   
  36.         va_start(arg, nr);  
  37.         for(i=0; i<nr; i++) {  
  38.                 result += va_arg(arg, int);  
  39.         }  
  40.         va_end(arg);  
  41.   
  42.         return result;  
  43.   
  44.   
  45. }  
  46. [wzb@embedded src]$ pwd  
  47. /home/wzb/workspace/testAutoMake/src  
  48. [wzb@embedded src]$ cat makefile.am  
  49. bin_PROGRAMS=testAutoMake  
  50. testAutoMake_SOURCES=main.c  
  51. [wzb@embedded src]$  


2.通过命令autoscan,创建autoconf的模板,生成configure.in 文件。

首先在工程目录中,通过执行autoscan命令,生成autoconf的模板文件configure.scan 文件,将其改名为configure.in。

需要两处修改:

 (1). 将configure.in文件中的语句:AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)中的

        FULL-PACKAGE-NAME: 替换为你指派的开发工程包的名字:如本工程的:test_AutoMake;

        VERSION: 开发的版本号,一般格式:主版本号.从版本号。 如 0.1;

         BUG-REPORT-ADDRESS:  提交bug的邮件地址: 如wzb12008@sina.com。

 (2). 还要添加一句:       AM_INIT_AUTOMAKE(testAutoMake, 0.1) 即AM_INIT_AUTOMAKE(package_name, version);

           用来初始化automake。


  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. makefile.am  src  
  5. [wzb@embedded testAutoMake]$ autoscan  
  6. autom4te: configure.ac: no such file or directory  
  7. autoscan: /usr/bin/autom4te failed with exit status: 1  
  8. [wzb@embedded testAutoMake]$ ls  
  9. autoscan.log  configure.scan  makefile.am  src  
  10. [wzb@embedded testAutoMake]$ vi configure.scan  
  11. [wzb@embedded testAutoMake]$ vi configure.scan  
  12. [wzb@embedded testAutoMake]$ mv configure.scan configure.in  
  13. [wzb@embedded testAutoMake]$ ls  
  14. autoscan.log  configure.in  makefile.am  src  
  15. [wzb@embedded testAutoMake]$ cat configure.in  
  16. #                                               -*- Autoconf -*-  
  17. # Process this file with autoconf to produce a configure script.  
  18.   
  19. AC_PREREQ(2.59)  
  20. AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)  
  21. AC_CONFIG_SRCDIR([src/main.c])  
  22. AC_CONFIG_HEADER([config.h])  
  23.   
  24. # Checks for programs.  
  25. AC_PROG_CC  
  26.   
  27. # Checks for libraries.  
  28.   
  29. # Checks for header files.  
  30. AC_HEADER_STDC  
  31.   
  32. # Checks for typedefs, structures, and compiler characteristics.  
  33.   
  34. # Checks for library functions.  
  35.   
  36. AC_CONFIG_FILES([makefile  
  37.                  src/makefile])  
  38. AC_OUTPUT  
  39. [wzb@embedded testAutoMake]$ vi configure.in  
  40. [wzb@embedded testAutoMake]$ clear  
  41. [wzb@embedded testAutoMake]$ ls  
  42. autoscan.log  configure.in  makefile.am  src  
  43. [wzb@embedded testAutoMake]$ cat configure.in  
  44. #                                               -*- Autoconf -*-  
  45. # Process this file with autoconf to produce a configure script.  
  46.   
  47. AC_PREREQ(2.59)  
  48. AC_INIT(testAutoMake, 0.1, wzb12008@sina.com)  
  49. AC_CONFIG_SRCDIR([src/main.c])  
  50. AC_CONFIG_HEADER([config.h])  
  51.   
  52. AM_INIT_AUTOMAKE(testAutoMake, 0.1)  
  53.   
  54. # Checks for programs.  
  55. AC_PROG_CC  
  56.   
  57. # Checks for libraries.  
  58.   
  59. # Checks for header files.  
  60. AC_HEADER_STDC  
  61.   
  62. # Checks for typedefs, structures, and compiler characteristics.  
  63.   
  64. # Checks for library functions.  
  65.   
  66. AC_CONFIG_FILES([makefile  
  67.                  src/makefile])  
  68. AC_OUTPUT  
  69. [wzb@embedded testAutoMake]$  

3. 使用aclocal, 将configure.in中宏展开,生成alocal.m4 和临时加速文件autom4te.cache。

  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. autoscan.log  configure.in  makefile.am  src  
  5. [wzb@embedded testAutoMake]$ aclocal  
  6. [wzb@embedded testAutoMake]$ ls  
  7. aclocal.m4  autom4te.cache  autoscan.log  configure.in  makefile.am  src  
  8. [wzb@embedded testAutoMake]$  
  9. [wzb@embedded testAutoMake]$  

4. 使用autoheader 生成config.h.in 文件。

  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. aclocal.m4  autom4te.cache  autoscan.log  configure.in  makefile.am  src  
  5. [wzb@embedded testAutoMake]$ autoheader  
  6. [wzb@embedded testAutoMake]$ ls  
  7. aclocal.m4      autoscan.log  configure.in  src  
  8. autom4te.cache  config.h.in   makefile.am  
  9. [wzb@embedded testAutoMake]$  


5. 创建文件 :README 、NEWS、AUTHORS、ChangeLog。touch  README NEWS AUTHORS ChangeLog

 

  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. aclocal.m4      autoscan.log  configure.in  src  
  5. autom4te.cache  config.h.in   makefile.am  
  6. [wzb@embedded testAutoMake]$ touch NEWS README AUTHORS ChangeLog  
  7. [wzb@embedded testAutoMake]$ ls  
  8. aclocal.m4  autom4te.cache  ChangeLog    configure.in  NEWS    src  
  9. AUTHORS     autoscan.log    config.h.in  makefile.am   README  
  10. [wzb@embedded testAutoMake]$ vi ChangeLog  
  11. [wzb@embedded testAutoMake]$ cat ChangeLog  
  12. 2012-04-07 Earl wzb12008@sina.com  
  13.         * Created  
  14. [wzb@embedded testAutoMake]$  

6. 执行automake -a 命令生成makefile.in 文件以及其他相关文件 install-sh, missing, depcomp, INSTALL , COPYING等。

  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. aclocal.m4  autom4te.cache  ChangeLog    configure.in  NEWS    src  
  5. AUTHORS     autoscan.log    config.h.in  makefile.am   README  
  6. [wzb@embedded testAutoMake]$ automake -a  
  7. configure.in: installing `./install-sh'  
  8. configure.in: installing `./missing'  
  9. src/makefile.am: installing `./depcomp'  
  10. makefile.am: installing `./INSTALL'  
  11. makefile.am: installing `./COPYING'  
  12. [wzb@embedded testAutoMake]$ ls  
  13. aclocal.m4      autoscan.log  configure.in  INSTALL      makefile.in  README  
  14. AUTHORS         ChangeLog     COPYING       install-sh   missing      src  
  15. autom4te.cache  config.h.in   depcomp       makefile.am  NEWS  
  16. [wzb@embedded testAutoMake]$  


7. 执行 autoconf命令,生成configure脚本。


  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. aclocal.m4      autoscan.log  configure.in  INSTALL      makefile.in  README  
  5. AUTHORS         ChangeLog     COPYING       install-sh   missing      src  
  6. autom4te.cache  config.h.in   depcomp       makefile.am  NEWS  
  7. [wzb@embedded testAutoMake]$ autoconf  
  8. [wzb@embedded testAutoMake]$ ls  
  9. aclocal.m4      autoscan.log  configure     depcomp     makefile.am  NEWS  
  10. AUTHORS         ChangeLog     configure.in  INSTALL     makefile.in  README  
  11. autom4te.cache  config.h.in   COPYING       install-sh  missing      src  
  12. [wzb@embedded testAutoMake]$  


8.执行./configure 生成 makefile 文件。

configure脚本的两个参数,-prefix 指定bin目录的父目录;另一个-host 指定处理器架构,交叉编译环境搭建时有用。

  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. aclocal.m4      autoscan.log  configure     depcomp     makefile.am  NEWS  
  5. AUTHORS         ChangeLog     configure.in  INSTALL     makefile.in  README  
  6. autom4te.cache  config.h.in   COPYING       install-sh  missing      src  
  7. [wzb@embedded testAutoMake]$ ./configure  
  8. checking for a BSD-compatible install... /usr/bin/install -c  
  9. checking whether build environment is sane... yes  
  10. checking for gawk... gawk  
  11. checking whether make sets $(MAKE)... yes  
  12. checking for gcc... gcc  
  13. checking for C compiler default output file name... a.out  
  14. checking whether the C compiler works... yes  
  15. checking whether we are cross compiling... no  
  16. checking for suffix of executables...  
  17. checking for suffix of object files... o  
  18. checking whether we are using the GNU C compiler... yes  
  19. checking whether gcc accepts -g... yes  
  20. checking for gcc option to accept ANSI C... none needed  
  21. checking for style of include used by make... GNU  
  22. checking dependency style of gcc... gcc3  
  23. checking how to run the C preprocessor... gcc -E  
  24. checking for egrep... grep -E  
  25. checking for ANSI C header files... yes  
  26. configure: creating ./config.status  
  27. config.status: creating makefile  
  28. config.status: creating src/makefile  
  29. config.status: creating config.h  
  30. config.status: executing depfiles commands  
  31. [wzb@embedded testAutoMake]$ ls  
  32. aclocal.m4      ChangeLog    config.status  depcomp     makefile.am  README  
  33. AUTHORS         config.h     configure      INSTALL     makefile.in  src  
  34. autom4te.cache  config.h.in  configure.in   install-sh  missing      stamp-h1  
  35. autoscan.log    config.log   COPYING        makefile    NEWS  
  36. [wzb@embedded testAutoMake]$  

9.  一下步骤基本与我们从源码编译安装应用的步骤相似。

       首先,./configure -prefix bin目录所在的父目录(绝对路径)

        接着  make  ; 编译

        最后  make install;   在bin目录中找到生成可执行程序测试。

  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. aclocal.m4  autom4te.cache  ChangeLog  config.h.in  config.status  configure.in  depcomp  install-sh  makefile.am  missing  README  stamp-h1  
  5. AUTHORS     autoscan.log    config.h   config.log   configure      COPYING       INSTALL  makefile    makefile.in  NEWS     src  
  6. [wzb@embedded testAutoMake]$ ./configure -prefix /home/wzb/w  
  7. workspace/ wzb/  
  8. [wzb@embedded testAutoMake]$ ./configure -prefix /home/wzb/workspace/testAutoMake/  
  9. checking for a BSD-compatible install... /usr/bin/install -c  
  10. checking whether build environment is sane... yes  
  11. checking for gawk... gawk  
  12. checking whether make sets $(MAKE)... yes  
  13. checking for gcc... gcc  
  14. checking for C compiler default output file name... a.out  
  15. checking whether the C compiler works... yes  
  16. checking whether we are cross compiling... no  
  17. checking for suffix of executables...  
  18. checking for suffix of object files... o  
  19. checking whether we are using the GNU C compiler... yes  
  20. checking whether gcc accepts -g... yes  
  21. checking for gcc option to accept ANSI C... none needed  
  22. checking for style of include used by make... GNU  
  23. checking dependency style of gcc... gcc3  
  24. checking how to run the C preprocessor... gcc -E  
  25. checking for egrep... grep -E  
  26. checking for ANSI C header files... yes  
  27. configure: creating ./config.status  
  28. config.status: creating makefile  
  29. config.status: creating src/makefile  
  30. config.status: creating config.h  
  31. config.status: config.h is unchanged  
  32. config.status: executing depfiles commands  
  33. [wzb@embedded testAutoMake]$ make  
  34. make  all-recursive  
  35. make[1]: Entering directory `/home/wzb/workspace/testAutoMake'  
  36. Making all in src  
  37. make[2]: Entering directory `/home/wzb/workspace/testAutoMake/src'  
  38. if gcc -DHAVE_CONFIG_H -I. -I. -I..     -g -O2 -MT main.o -MD -MP -MF ".deps/main.Tpo" -c -o main.o main.c; \  
  39.         then mv -f ".deps/main.Tpo" ".deps/main.Po"else rm -f ".deps/main.Tpo"; exit 1; fi  
  40. gcc  -g -O2   -o testAutoMake  main.o  
  41. make[2]: Leaving directory `/home/wzb/workspace/testAutoMake/src'  
  42. make[2]: Entering directory `/home/wzb/workspace/testAutoMake'  
  43. make[2]: Leaving directory `/home/wzb/workspace/testAutoMake'  
  44. make[1]: Leaving directory `/home/wzb/workspace/testAutoMake'  
  45. [wzb@embedded testAutoMake]$ ls  
  46. aclocal.m4  autom4te.cache  ChangeLog  config.h.in  config.status  configure.in  depcomp  install-sh  makefile.am  missing  README  stamp-h1  
  47. AUTHORS     autoscan.log    config.h   config.log   configure      COPYING       INSTALL  makefile    makefile.in  NEWS     src  
  48. [wzb@embedded testAutoMake]$ make install  
  49. Making install in src  
  50. make[1]: Entering directory `/home/wzb/workspace/testAutoMake/src'  
  51. make[2]: Entering directory `/home/wzb/workspace/testAutoMake/src'  
  52. test -z "/home/wzb/workspace/testAutoMake//bin" || mkdir -p -- "/home/wzb/workspace/testAutoMake//bin"  
  53.   /usr/bin/install -c 'testAutoMake' '/home/wzb/workspace/testAutoMake//bin/testAutoMake'  
  54. make[2]: Nothing to be done for `install-data-am'.  
  55. make[2]: Leaving directory `/home/wzb/workspace/testAutoMake/src'  
  56. make[1]: Leaving directory `/home/wzb/workspace/testAutoMake/src'  
  57. make[1]: Entering directory `/home/wzb/workspace/testAutoMake'  
  58. make[2]: Entering directory `/home/wzb/workspace/testAutoMake'  
  59. make[2]: Nothing to be done for `install-exec-am'.  
  60. make[2]: Nothing to be done for `install-data-am'.  
  61. make[2]: Leaving directory `/home/wzb/workspace/testAutoMake'  
  62. make[1]: Leaving directory `/home/wzb/workspace/testAutoMake'  
  63. [wzb@embedded testAutoMake]$ ls  
  64. aclocal.m4      autoscan.log  config.h     config.status  COPYING  install-sh   makefile.in  README  
  65. AUTHORS         bin           config.h.in  configure      depcomp  makefile     missing      src  
  66. autom4te.cache  ChangeLog     config.log   configure.in   INSTALL  makefile.am  NEWS         stamp-h1  
  67. [wzb@embedded testAutoMake]$ ./bin/testAutoMake  
  68. 15,  
  69. test.......makefile ........ok  
  70. [wzb@embedded testAutoMake]$  



10. 当程序稳定了,可以通过命令 make dist , 生成工程的发布文件。(还有 make distcheck命令)
  1. [wzb@embedded testAutoMake]$ pwd  
  2. /home/wzb/workspace/testAutoMake  
  3. [wzb@embedded testAutoMake]$ ls  
  4. aclocal.m4      autoscan.log  config.h     config.status  COPYING  install-sh   makefile.in  README  
  5. AUTHORS         bin           config.h.in  configure      depcomp  makefile     missing      src  
  6. autom4te.cache  ChangeLog     config.log   configure.in   INSTALL  makefile.am  NEWS         stamp-h1  
  7. [wzb@embedded testAutoMake]$ make dist  
  8. { test ! -d testAutoMake-0.1 || { find testAutoMake-0.1 -type d ! -perm -200 -exec chmod u+w {} ';' && rm -fr testAutoMake-0.1; }; }  
  9. mkdir testAutoMake-0.1  
  10. list='src'for subdir in $list; do \  
  11.           if test "$subdir" = .; then :; else \  
  12.             test -d "testAutoMake-0.1/$subdir" \  
  13.             || mkdir -p -- "testAutoMake-0.1/$subdir" \  
  14.             || exit 1; \  
  15.             distdir=`CDPATH="${ZSH_VERSION+.}:" && cd testAutoMake-0.1 && pwd`; \  
  16.             top_distdir=`CDPATH="${ZSH_VERSION+.}:" && cd testAutoMake-0.1 && pwd`; \  
  17.             (cd $subdir && \  
  18.               make  \  
  19.                 top_distdir="$top_distdir" \  
  20.                 distdir="$distdir/$subdir" \  
  21.                 distdir) \  
  22.               || exit 1; \  
  23.           fi; \  
  24.         done  
  25. make[1]: Entering directory `/home/wzb/workspace/testAutoMake/src'  
  26. make[1]: Leaving directory `/home/wzb/workspace/testAutoMake/src'  
  27. find testAutoMake-0.1 -type d ! -perm -755 -exec chmod a+rwx,go+rx {} \; -o \  
  28.           ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \  
  29.           ! -type d ! -perm -400 -exec chmod a+r {} \; -o \  
  30.           ! -type d ! -perm -444 -exec /bin/sh /home/wzb/workspace/testAutoMake/install-sh -c -m a+r {} {} \; \  
  31.         || chmod -R a+r testAutoMake-0.1  
  32. tardir=testAutoMake-0.1 && /bin/sh /home/wzb/workspace/testAutoMake/missing --run tar chof - "$tardir" | GZIP=--best gzip -c >testAutoMake-0.1.tar.gz  
  33. { test ! -d testAutoMake-0.1 || { find testAutoMake-0.1 -type d ! -perm -200 -exec chmod u+w {} ';' && rm -fr testAutoMake-0.1; }; }  
  34. [wzb@embedded testAutoMake]$ ls  
  35. aclocal.m4      autoscan.log  config.h     config.status  COPYING  install-sh   makefile.in  README    testAutoMake-0.1.tar.gz  
  36. AUTHORS         bin           config.h.in  configure      depcomp  makefile     missing      src  
  37. autom4te.cache  ChangeLog     config.log   configure.in   INSTALL  makefile.am  NEWS         stamp-h1  
  38. [wzb@embedded testAutoMake]$ clear  
  39. [wzb@embedded testAutoMake]$ ls  
  40. aclocal.m4      autoscan.log  config.h     config.status  COPYING  install-sh   makefile.in  README    testAutoMake-0.1.tar.gz  
  41. AUTHORS         bin           config.h.in  configure      depcomp  makefile     missing      src  
  42. autom4te.cache  ChangeLog     config.log   configure.in   INSTALL  makefile.am  NEWS         stamp-h1  
  43. [wzb@embedded testAutoMake]$ clear  
  44. [wzb@embedded testAutoMake]$ ls  
  45. aclocal.m4      autoscan.log  config.h     config.status  COPYING  install-sh   makefile.in  README    testAutoMake-0.1.tar.gz  
  46. AUTHORS         bin           config.h.in  configure      depcomp  makefile     missing      src  
  47. autom4te.cache  ChangeLog     config.log   configure.in   INSTALL  makefile.am  NEWS         stamp-h1  
  48. [wzb@embedded testAutoMake]$ vi ChangeLog  
  49. [wzb@embedded testAutoMake]$ clear  
  50. [wzb@embedded testAutoMake]$ ls  
  51. aclocal.m4      autoscan.log  config.h     config.status  COPYING  install-sh   makefile.in  README    testAutoMake-0.1.tar.gz  
  52. AUTHORS         bin           config.h.in  configure      depcomp  makefile     missing      src  
  53. autom4te.cache  ChangeLog     config.log   configure.in   INSTALL  makefile.am  NEWS         stamp-h1  
  54. [wzb@embedded testAutoMake]$ vi configure.in  


以上是是使用automake生成makefile的全过程,

 想到了为什么,安装源码文件时,要先 ./configure -prefix ... , 接着make, 接着make install 。很清楚了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值