当前位置:  技术问答>linux和unix

在linux下用c做开发,我需要用autoconf等工具,请各位分享经验,3q

    来源: 互联网  发布时间:2015-11-09

    本文导语:  在linux下写一个lib,需要写得比较正规一些,要使用autoconf等系列工具。 完整的开发我没有做过,所以我不太明白具体流程 是先写代码,然后根据所写的代码去写configrue.in以及Makefile.am? 还是先用工具把编译环境搭...

在linux下写一个lib,需要写得比较正规一些,要使用autoconf等系列工具。
完整的开发我没有做过,所以我不太明白具体流程
是先写代码,然后根据所写的代码去写configrue.in以及Makefile.am? 还是先用工具把编译环境搭建好,然后边写代码边修改configrue.in以及Makefile.am等文件?

麻烦各位分享一下经验。谢了!~~~~~

|
第一步,先编写代码,然后在代码文件夹的最顶层用autoscan生成configure.scan,然后编辑configure.scan并改名为configure.in,然后执行aclocal,autoconf,

第二步,
手工制作makefile.am,然后执行automake将makefile.am变成makefile.in,然后执行./configure,make,make install

另外,
要想发布的话,可以做rpm包

我的blog
http://itworker9527.blogchina.com/index.html

欢迎和我交流技术,

|
http://fanqiang.chinaunix.net/system/linux/2005-12-14/3926.shtml

Linux下Makefile的automake生成全攻略 
作者:余涛 来源:不详 (2005-12-14 17:05:33) 
http://fanqiang.chinaunix.net/system/linux/2005-12-14/3926.shtml
 
 
作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。 
  在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“make”,“make instal”就可以把程序安装到Linux系统中去了。这将特别适合想做开放源代码软件的程序开发人员,又或如果你只是自己写些小的Toy程序,那么这个文章对你也会有很大的帮助。

  一、Makefile介绍

  Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中纪录有文件的信息,在make时会决定在链接的时候需要重新编译哪些文件。

  Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。

  Makefile的基本结构不是很复杂,但当一个程序开发人员开始写Makefile时,经常会怀疑自己写的是否符合惯例,而且自己写的Makefile经常和自己的开发环境相关联,当系统环境变量或路径发生了变化后,Makefile可能还要跟着修改。这样就造成了手工书写Makefile的诸多问题,automake恰好能很好地帮助我们解决这些问题。

  使用automake,程序开发人员只需要写一些简单的含有预定义宏的文件,由autoconf根据一个宏文件生成configure,由automake根据另一个宏文件生成Makefile.in,再使用configure依据Makefile.in来生成一个符合惯例的Makefile。下面我们将详细介绍Makefile的automake生成方法。

  二、使用的环境

  本文所提到的程序是基于Linux发行版本:Fedora Core release 1,它包含了我们要用到的autoconf,automake。

  三、从helloworld入手

  我们从大家最常使用的例子程序helloworld开始。

  下面的过程如果简单地说来就是:

  新建三个文件:

   helloworld.c
   configure.in
   Makefile.am

  然后执行:

aclocal; autoconf; automake --add-missing; ./configure; make; ./helloworld 

  就可以看到Makefile被产生出来,而且可以将helloworld.c编译通过。

  很简单吧,几条命令就可以做出一个符合惯例的Makefile,感觉如何呀。

  现在开始介绍详细的过程:

  1、建目录

  在你的工作目录下建一个helloworld目录,我们用它来存放helloworld程序及相关文件,如在/home/my/build下:

$ mkdir helloword
$ cd helloworld 

  2、 helloworld.c

  然后用你自己最喜欢的编辑器写一个hellowrold.c文件,如命令:vi helloworld.c。使用下面的代码作为helloworld.c的内容。

int main(int argc, char** argv)
{
printf("Hello, Linux World!n");
return 0;


  完成后保存退出。

  现在在helloworld目录下就应该有一个你自己写的helloworld.c了。

  3、生成configure

  我们使用autoscan命令来帮助我们根据目录下的源代码生成一个configure.in的模板文件。

  命令:

$ autoscan
$ ls
configure.scan helloworld.c 

  执行后在hellowrold目录下会生成一个文件:configure.scan,我们可以拿它作为configure.in的蓝本。

  现在将configure.scan改名为configure.in,并且编辑它,按下面的内容修改,去掉无关的语句:

========configure.in内容开始==============
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_INIT(helloworld.c)
AM_INIT_AUTOMAKE(helloworld, 1.0)

# 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(Makefile)
====configure.in内容结束========== 

  然后执行命令aclocal和autoconf,分别会产生aclocal.m4及configure两个文件:

$ aclocal 
$ls 
aclocal.m4 configure.in helloworld.c 
$ autoconf 
$ ls 
aclocal.m4 autom4te.cache configure configure.in helloworld.c 


  大家可以看到configure.in内容是一些宏定义,这些宏经autoconf处理后会变成检查系统特性、环境变量、软件必须的参数的shell脚本。

  autoconf 是用来生成自动配置软件源代码脚本(configure)的工具。configure脚本能独立于autoconf运行,且在运行的过程中,不需要用户的干预。

  要生成configure文件,你必须告诉autoconf如何找到你所用的宏。方式是使用aclocal程序来生成你的aclocal.m4。

  aclocal根据configure.in文件的内容,自动生成aclocal.m4文件。aclocal是一个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”。

  autoconf从configure.in这个列举编译软件时所需要各种参数的模板文件中创建configure。

  autoconf需要GNU m4宏处理器来处理aclocal.m4,生成configure脚本。

  m4是一个宏处理器。将输入拷贝到输出,同时将宏展开。宏可以是内嵌的,也可以是用户定义的。除了可以展开宏,m4还有一些内建的函数,用来引用文件,执行命令,整数运算,文本操作,循环等。m4既可以作为编译器的前端,也可以单独作为一个宏处理器。

4、新建Makefile.am

  新建Makefile.am文件,命令:

$ vi Makefile.am 

  内容如下:


AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=helloworld
helloworld_SOURCES=helloworld.c 



|
用kdevelop 吧
一切都自动完成

    
 
 

您可能感兴趣的文章:

  • 请教linux下如何用autoconf做confgure的shell文件?
  • 高分相送,如何更改Autoconf和Automake使其被arm-linux-gcc编译
  • 寻 懂的redhat linux 下 . 使用automake和autoconf 自动生成Makefile 的 达人。
  • 请问如果要按自己需要修改linux内核源代码需要那些准备知识
  • 使用secureFX连接到linux上需要在linux上配置什么
  • 使用linux内核+qt开发的应用程序需要开源吗
  • 公司需要,要我学linux,和并行系统软件开发,诸位有什么好的建议?我一点不懂linux!
  • 在linux下开发游戏程序需要什么?
  • 网络中其他98的机器怎么telnet到linux机器上,linux中有没有什么需要设置的
  • 做Linux操作系统下的手机驱动开发需要掌握哪些知识啊?
  • 要写一个Linux下的elf加载器需要哪些知识?
  • 测试需要:如何让Linux瞬间宕机?
  • 请教:Linux7.0下安装oracle817需要网卡吗?
  • 嵌入式linux硬件平台移植需要修改哪些相关设置
  • 要在linux上实现router功能,需要装哪些软件?
  • 在装蓝点Linux时提示需要ext2分区,请问如何分区。用何工具?
  • linux上的c程序移植到solaris 10 需要作哪些工作
  • linux中html解析,需要哪些知识
  • 在linux环境下,搞分布式方面的开发,需要什么样的软件,硬件?
  • 作linux开发,平常需要准备那些参考资料?
  • 狂急! 狂急! Satyam公司需要Linux内核高级工程师/测试经理
  • linux需要补丁吗
  • linux下安装postgres需要提前安装什么?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有WINDOWS编程经验的人想学LINUX及开发,该怎么学,请有经验的指教
  • 恳请对服务器的开发有经验的谈谈服务器开发经验(Unix/Linux & Win32):服务器构架、内存泄漏检测,异常出错……!!!
  • 没有LINUX经验如何获得一份LINUX工作
  • 请教 Linux 手机 DIY 编程的办法及经验
  • 想在linux下学习oracle,有经验的高手们给点建议。
  • 请有经验的朋友推荐一下Linux/Nnix下网络编程方面的书,急需学习
  • 这里有一个linux论坛。(后备力量全是Linux开发有经验的程序员)
  • 想学习linux环境下的IM server/client 开发,请有经验的朋友指点一下!
  • 嵌入式linux学习经验
  • Unix/Linux下的开发经验,谁有这方面面试题.
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘) iis7站长之家
  • 求助!如何在linux中移植SOAP协议?有经验的朋友提供一点建议
  • 求有过公司linux解决经验的高手指点!!!
  • 高薪求Linux开发高手,可兼职,有开发经验的进来看看
  • 请有配置Linux下ftp服务器经验的人和我联系,高分重赏 (OICQ:57226475)
  • 想通过自己动手学习Linux网络编程,做一个什么比较好呢?望有经验的高手指点~~
  • 招聘: 嵌入式linux工程师,1-2年工作经验,熟悉QT
  • 请有经验者介绍本学linux操作系统的书
  • 跪求linux下开发经验!及 学习GTK电子书籍!
  • 新人求教,linux c开发,路过的经验者,请帮住我
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3