当前位置: 首页 > news >正文

自己建立网站要钱吗网站开发的体会

自己建立网站要钱吗,网站开发的体会,网站建设要规避的,整站快速排名autotools是系列工具#xff0c;读者首先要确认系统是否装了以下工具#xff08;可以用which命令进行查看#xff09;。 autoscanaclocalautoheaderautomakeautoconf 使用autotools主要就是利用各个工具的脚本文件以生成最后的Makefile。其总体流程是这样的#xff1a; 使…  autotools是系列工具读者首先要确认系统是否装了以下工具可以用which命令进行查看。 autoscanaclocalautoheaderautomakeautoconf 使用autotools主要就是利用各个工具的脚本文件以生成最后的Makefile。其总体流程是这样的 使用aclocal生成一个“aclocal.m4”文件该文件主要处理本地的宏定义改写“configure.scan”文件并将其重命名为“configure.in”并使用autoconf文件生成configure文件。 接下来笔者将通过一个简单的hello.c例子带领读者熟悉autotools生成makefile的过程由于在这过程中有涉及到较多的脚本文件为了更清楚地了解相互之间的关系强烈建议读者实际动手操作以体会其整个过程。 2autoscan 它会在给定目录及其子目录树中检查源文件若没有给出目录就在当前目录及其子目录树中进行检查。它会搜索源文件以寻找一般的移植性问题并创建一个文件“configure.scan”该文件就是接下来autoconf要用到的“configure.in”原型。如下所示 [rootlocalhost automake]# autoscan autom4te: configure.ac: no such file or directory autoscan: /usr/bin/autom4te failed with exit status: 1 [rootlocalhost automake]# ls autoscan.log configure.scan hello.c 如上所示autoscan首先会尝试去读入“configure.ac”同configure.in的配置文件文件此时还没有创建该配置文件于是它会自动生成一个“configure.in”的原型文件“configure.scan”。 接下来首先运行aclocal生成一个“aclocal.m4”文件该文件主要处理本地的宏定义。如下所示 [rootlocalhost automake]# aclocal 再接着运行autoconf生成“configure”可执行文件。如下所示 [rootlocalhost automake]# autoconf [rootlocalhost automake]# ls aclocal.m4 autom4te.cache autoscan.log configure configure.in hello.c 3autoheader 接着使用autoheader命令它负责生成config.h.in文件。该工具通常会从“acconfig.h”文件中复制用户附加的符号定义因此此处没有附加符号定义所以不需要创建“acconfig.h”文件。如下所示 [rootlocalhost automake]# autoheader 4automake 这一步是创建Makefile很重要的一步automake要用的脚本配置文件是Makefile.am用户需要自己创建相应的文件。之后automake工具转换成Makefile.in。在该例中笔者创建的文件为Makefile.am如下所示 AUTOMAKE_OPTIONSforeign bin_PROGRAMS hello hello_SOURCES hello.c 下面对该脚本文件的对应项进行解释。 其中的AUTOMAKE_OPTIONS为设置automake的选项。由于GNU在第1章中已经有所介绍对自己发布的软件有严格的规范比如必须附带许可证声明文件COPYING等否则automake执行时会报错。automake提供了三种软件等级foreign、gnu和gnits让用户选择采用默认等级为gnu。在本例使用foreign等级它只检测必须的文件。bin_PROGRAMS定义要产生的执行文件名。如果要产生多个执行文件每个文件名用空格隔开。hello_SOURCES 定义“hello”这个执行程序所需要的原始文件。如果”hello”这个程序是由多个原始文件所产生的则必须把它所用到的所有原始文件都列出来并用空格隔开。例如若目标体“hello”需要“hello.c”、“sunq.c”、“hello.h”三个依赖文件则定义 hello_SOURCEShello.c sunq.c hello.h。要注意的是如果要定义多个执行文件则对每个执行程序都要定义相应的file_SOURCES。 接下来可以使用automake对其生成“configure.in”文件在这里使用选项“—adding-missing”可以让automake自动添加有一些必需的脚本文件。如下所示 [rootlocalhost automake]# automake –add-missing configure.in: installing ‘./install-sh’ configure.in: installing ‘./missing’ Makefile.am: installing ‘depcomp’ [rootlocalhost automake]# ls aclocal.m4      autoscan.log configure.in hello.c     Makefile.am missing autom4te.cache configure     depcomp    install-sh Makefile.in config.h.in 可以看到在automake之后就可以生成configure.in文件。 5autoconf configure.in是autoconf的脚本配置文件它的原型文件“configure.scan”如下所示 #                                               -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) #The next one is modified by sunq #AC_INIT(FULL-PACKAGE-NAME,VERSION,BUG-REPORT-ADDRESS)    初始化,定义软件的基本信息,包括设置包的全称,版本号以及报告BUG时需要用的邮箱地址 这个巨集用来检查原始码所在的路径autoscan 会自动产生我们不必修改它。 AC_INIT(hello,1.0) # The next one is added by sunq AM_INIT_AUTOMAKE(hello,1.0)    改行是增加的一定要有添加宏AM_INIT_AUTOMAKE, 它是automake所必备的宏也同前面一样PACKAGE是所要产生软件套件的名称VERSION是版本编号。最后发布的软件名称由这里决定 这是使用 Automake 所必备的巨集PACKAGE 是我们所要产生软体套件的名称VERSION 是版本编号。 AC_CONFIG_SRCDIR([hello.c])     此处说明hello.c的位置如果是在子目录下那么得写成 目录/hello.c 不然automake的时候找不到程序 AC_CONFIG_HEADER([config.h])   此处是方便autoheader调用用的此处的宏是用来生成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                                  此处要加makefile如果makefile不止一个当前目录和子目录都有 则都要写例如AC_OUTPUT([makefile   src/makefile])   下面对这个脚本文件进行解释 以“#”号开始的行为注释。AC_PREREQ宏声明本文件要求的autoconf版本如本例使用的版本2.59。· AC_INIT宏用来定义软件的名称和版本等信息在本例中省略了BUG-REPORT-ADDRESS一般为作者的e-mail。AM_INIT_AUTOMAKE是笔者另加的它是automake所必备的宏也同前面一样PACKAGE是所要产生软件套件的名称VERSION是版本编号。AC_CONFIG_SRCDIR宏用来侦测所指定的源码文件是否存在来确定源码目录的有 效性。在此处为当前目录下的hello.c。 AC_CONFIG_HEADER宏用于生成config.h文件以便autoheader使用。AC_CONFIG_FILES宏用于生成相应的Makefile文件。中间的注释间可以添加分别用户测试程序、测试函数库、测试头文件等宏定义。 6运行configure 在这一步中通过运行自动配置设置文件configure把Makefile.in变成了最终的Makefile。如下所示 [rootlocalhost automake]# ./configure 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: executing depfiles commands 可以看到在运行configure时收集了系统的信息用户可以在configure命令中对其进行方便地配置。在./configure的自定义参数有两种一种是开关式–enable-XXX或–disable-XXX另一种是开放式即后面要填入一串字符–with- XXXyyyy参数。读者可以自行尝试其使用方法。另外读者可以查看同一目录下的”config.log”文件以方便调试之用。 到此为止makefile就可以自动生成了。 6make 键入make默认执行”make all”命令即目标体为all其执行情况如下所示 [rootlocalhost automake]# make if Gcc -DPACKAGE_NAME\”\” -DPACKAGE_TARNAME\”\” -DPACKAGE_VERSION\”\” -DPACKAGE_STRING\”\” -DPACKAGE_BUGREPORT\”\” -DPACKAGE\”hello\” -DVERSION\”1.0\” -I. -I.     -g -O2 -MT hello.o -MD -MP -MF “.deps/hello.Tpo” -c -o hello.o hello.c; \ then mv -f “.deps/hello.Tpo” “.deps/hello.Po”; else rm -f “.deps/hello.Tpo”; exit 1; fi Gcc -g -O2   -o hello hello.o 此时在本目录下就生成了可执行文件“hello”运行“./hello”能出现正常结果如下所示 [rootlocalhost automake]# ./hello Hello!Autoconf! 7make install 如果我们用bin_PROGRAMS 巨集的话程式会被安装至 /usr/local/bin 这个目录。 另关于configure安装 比如./configure 那么可执行程序默认安装在/usr/local/bin目录。库是/usr/local/lib/等等。 比如 ./configure  --prefix/xxx 那么可执行程序默认是在 /xxx/bin 目录。库是 /xxx/lib/ 等等此时会把该程序安装到系统目录中去如下所示 [rootlocalhost automake]# make install if Gcc -DPACKAGE_NAME\”\” -DPACKAGE_TARNAME\”\” -DPACKAGE_VERSION\”\” -DPACKAGE_STRING\”\” -DPACKAGE_BUGREPORT\”\” -DPACKAGE\”hello\” -DVERSION\”1.0\” -I. -I.     -g -O2 -MT hello.o -MD -MP -MF “.deps/hello.Tpo” -c -o hello.o hello.c; \ then mv -f “.deps/hello.Tpo” “.deps/hello.Po”; else rm -f “.deps/hello.Tpo”; exit 1; fi Gcc -g -O2   -o hello hello.o make[1]: Entering directory ‘/root/workplace/automake’ test -z “/usr/local/bin” || mkdir -p — “/usr/local/bin” /usr/bin/install -c ‘hello’ ‘/usr/local/bin/hello’ make[1]: Nothing to be done for ‘install-data-am’. make[1]: LeaVing directory ‘/root/workplace/automake’ 此时若直接运行hello也能出现正确结果如下所示 [rootlocalhost automake]# hello Hello!Autoconf! 8make clean 此时make会清除之前所编译的可执行文件及目标文件object file, *.o如下所示 [rootlocalhost automake]# make clean test -z “hello” || rm -f hello rm -f *.o make distclean 除了清除执行档和目的档外也把 configure 所产生的 Makefile也清除掉。 9make dist 此时make将程序和相关的文档打包为一个压缩文档以供发布如下所示 [rootlocalhost automake]# make dist [rootlocalhost automake]# ls hello-1.0-tar.gz hello-1.0-tar.gz 可见该命令生成了一个hello-1.0-tar.gz的压缩文件。 由上面的讲述读者不难看出autotools确实是软件维护与发布的必备工具也鉴于此如今GUN的软件一般都是由automake来制作的。 110. make distcheck     和 make dist 类似但是加入检查包装後的压缩档是否正常。这个目标除了把程式和相关档案包装成 tar.gz 档外还会自动把这个压 缩档解开执行 configure并且进行 make all 的动作确认编译无误後会显示这个 tar.gz 档已经准备好可供散播了。这个检查非 常有用检查过关的套件基本上可以给任何一个具备 GNU 发展境的人去重新编译。就 hello-1.tar.gz 这个范例而言除了在 Red Hat Linux 上在 FreeBSD 2.2.x 版也可以正确地重新编译。 ############################################### 以上是一个单纯的autotools的例子即单纯一个目录下有一个程序 如果是一个项目项目目录然后下面有子目录子目录下有一程序我们看一个例子 /test/src/helle.c 1, 在test下编写makefil.am SUBDIRS这里写hello.c具体放置的目录 2,在src下编写makefile.am AUTOMAKE_OPTIONSforeign bin_PROGRAMShello   ( 这是要形成的可知行文件的名字) 定义我们所要产生的执行档档名。如果要产生多个执行档每个档名用空白字元隔开。 如果我们定义多个执行档则对每个执行档都要定义相对的filename_SOURCES。 hello_SOURCEShello.c 这是依赖的文件的名字 定义 hello 这个执行档所需要的原始档。如果 hello 这个程式是由多个原始档所产生必须把它所用到的原始档都列出来以空白字元隔开。假设 hello 这个程式需要 hello.c、main.c、 hello.h 三个档案的话则定义 hello_SOURCES hello.c main.c hello.h 3,在test下autoscan 以后的工作同文章前面所讲只是有一个地方要注意的是 configure.in文件的这里── AC_CONFIG_SRCDIR([src/hello.c])     此处说明hello.c的位置如果是在子目录下那么得写成 目录/hello.c 不然automake的时候找不到程序 AC_OUTPUT   改                           此处要加makefile如果makefile不止一个当前目录和子目录都有 则都要写例如AC_OUTPUT([makefile   src/makefile])   AC_OUTPUT([makefile   src/makefile])  后面和文章前面所讲都一样
http://www.pierceye.com/news/667435/

相关文章:

  • 宜昌网站建设兼职怎样做自媒体拍视频赚钱
  • 我的世界做视频封面的网站免费的app源码网
  • 网站搭建wordpress参考消息电子版在线阅读
  • 成立一个网站平台要多少钱科技有限公司一般是做什么的
  • 邵阳 网站开发 招聘桂林阳朔楼盘最新价格
  • 如何建设网站导航内链接wordpress 特别慢
  • 蚌埠网站建设文章网站软件定制开发公司
  • 软件通网站建设百度收录网站电话
  • 取消网站备案制度正规的电商平台有哪些
  • 茶叶网站源码php6731官方网站下载
  • 网站建设mfdos 优帮云制作简历哪个网站好
  • 淮南市城乡建设局网站网站seo收费
  • 陕西手机网站制作描述网站开发的广告词
  • 一个网址建多个网站手机网站数据加载
  • 网站视觉分析上海做saas平台网站的公司
  • 沈阳网站设计网站一键制作
  • 建设工程中标查询网站北京建设质量协会网站
  • 做公司网站要素做关于灯饰的网站
  • 网站编辑工具软件单位发购物或电影卡有哪些app
  • dw网站导航怎么做3免费网站建站
  • 用jsp做网站的代码句容网站建设制作
  • 宁国新站seo网页版微信登录提示二维码已失效
  • 深圳英文网站建设去哪家公司电商网站开发
  • 黑色网站后台出库入库管理软件app
  • 网站建设公司团队简介国外有网站备案制度吗
  • 怎么让公司网站随便就搜的到wordpress后台卡顿
  • 网站怎么做图片动态图片不显示报价单模板怎么做
  • 怎么建一个公司运营网站江西网站建设哪家专业
  • 网站后期维护费用网站开发学徒工作如何
  • 网站建站程序一站式网站建设服务