`

Mac OS/Linux下automake的流程

 
阅读更多

参考: http://hi.baidu.com/yetao19860606/item/033148eb42fd9a3387d9de78

 

经常需要写一些小工具,这些工具有时候简单的就用python,性能高一点的就需要c,而我又喜欢用命令行和vi写程序,所以写makefile自然就成了麻烦中的麻烦了,不过好在可以使用automake,不过网上并没有很详细的说automake如何使用(都是东说一块西说一块的),查了一下然后整理了一下,发上来,就当自己做笔记,也方便了后面的人,高手自然自动飘过即可。

首先我们假设在这个目录下已经有一些代码了,例如main.c,我们使用automake来创建makefile,步骤如下。

1)首先在目录下运行autoscan。
2)修改configure.scan为configure.in。
3)编辑configure.in

# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61)
# 这下面都是需要填写的内容,如包的名称,版本号和bug报告的邮箱
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADER([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_OUTPUT

我们可以看到上面的默认配置,我们修改一下配置,修改后就成了下面这个样子。

# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

 

AC_PREREQ(2.61)
# 添加我们的配置,如包的名称为helloworld,版本0.1,邮箱等
AC_INIT(helloworld, 0.1, soundbbg@gmail.com)
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADER([config.h])
# 添加一些基本配置
AM_INIT_AUTOMAKE(main, 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.
# 在这里添加输出makefile
AC_OUTPUT([makefile])

4)修改完成后退出,运行aclocal。
5)运行完成后运行autoheader

6)完成之后,我们创建一个makefile.am,并修改如下。

AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=main

main_SOURCES=main.c

 

7)修改完成后运行automake –a

8) 运行 autoconf

9)运行完成后运行./configure

OK我们的makefile就生成好了,这个时候只要我们make一下就可以编译程序了。编译完成后可以运行./xxxx 来运行自己的程序。

 

 

 

 

(大致生成流程图如下:)

 

图 2生成Makefile流程图 

 

 

分享到:
评论

相关推荐

    automake,autoconf编译大型项目例子

    3. **跨平台兼容性**:automake和autoconf的组合使得项目能在各种操作系统上编译,包括Unix、Linux、Mac OS X甚至Windows(通过MinGW)。 4. **测试集成**:automake支持集成测试框架,如CTest或CTestScript,使得...

    automake-1.12.6.tar.gz

    6. **兼容性**: `automake` 可以在各种 Unix-like 操作系统上运行,包括 Linux、FreeBSD、Mac OS X 等。 在解压 `automake-1.12.6.tar.gz` 后,通常会得到一个名为 `automake-1.12.6` 的目录,其中包括以下内容: ...

    external_exfat

    支持的操作系统: GNU / Linux Mac OS X 10.5或更高版本FreeBSD 大多数GNU / Linux发行版已经在其存储库中包含fuse-exfat和exfat-utils,因此您只需安装和使用它们即可。 下一章介绍如何从源代码进行编译。编译中要...

    libmodbus:适用于Linux,Mac OS X,FreeBSD,QNX和Windows的Modbus库

    该库是用C语言编写的,旨在在Linux,Mac OS X,FreeBSD和QNX和Windows上运行。安装您只需要安装automake,autoconf,libtool和C编译器(gcc或clang)来编译库,并安装asciidoc和xml来生成文档(可选)。 要安装,只...

    About This Mac for Linux-开源

    关于这个名为"About This Mac for Linux"的项目,它是一个开源软件项目,旨在为Linux操作系统带来类似Mac OS X的用户体验,特别是"关于此Mac"的功能。在Mac OS X系统中,“关于此Mac”是一个用于查看计算机基本信息...

    Evenk:一个用于并发编程的C ++库

    此外,它可能会在Mac OS / X x86-64上使用,但由于缺少futex系统调用,因此某些功能在此处不起作用。 该库本身是仅标头的,因此只要将标头文件复制到您希望包含标头文件的任何位置,就可以使用它。 [目前,对于...

    libtool-2.2.6a.tar.gz

    1. **跨平台兼容性**:libtool能够自动处理不同操作系统对动态库的编译和链接方式,如Unix/Linux下的`.so`、Windows下的`.dll`和Mac OS X下的`.dylib`。 2. **版本管理**:libtool支持库的版本管理,包括版本号的...

    openslide-java:Java与OpenSlide的绑定

    建造要求JDK 阿帕奇蚂蚁OpenSlide> = 3.4.0在Linux或Mac OS X上构建 ./configuremakemake install(如果从Git存储库构建,则首先需要安装autoconf,automake,libtool和pkg-config并运行autoreconf -i 。)Windows与...

    mumu_libe.tar (2).gz

    libevent支持多种事件通知机制,包括Epoll(Linux),Kqueue(FreeBSD,Mac OS X),EventPort(Solaris)和Select/Poll等。这些机制都是操作系统内核提供的,能高效地处理大量打开的文件描述符。libevent库将这些...

    CentOS 5.5 挂载Windows NTFS 文件系统.txt

    NTFS-3G是一款开源的NTFS文件系统驱动程序,它不仅提供了对NTFS文件系统的完整读写支持,还具有跨平台兼容性,可以在多种操作系统中使用,包括Linux、Mac OS X和各种Unix系统。 安装NTFS-3G的步骤大致如下: 1. **...

    smuxi:Smuxi是基于GNOME GTK +Linux,Windows和Mac OS X的用户友好型免费IRC客户端

    软件需求首先,您将需要安装一些库来编译源代码构建工具和库: Automake,Autoconf,gettext,pkg-config Mono SDK(> = 4.6.2) 妮妮(> = 1.1) log4net SQLite3 GTK#(> = 2.10)(可选,但对于GNOME前端是必需...

    xlslib-package-2.5.0

    这个库是跨平台的,可以在Windows、Linux、Mac OS等操作系统上运行。 在安装和配置xlslib时,首先需要执行`configure`脚本,这是一个自动化工具,用于检测系统环境并生成适应性地`Makefile`。然而,在某些情况下,`...

    sshpass.tar.gz

    在OS X和Linux系统中,SSH是管理员常用的工具,用于管理远程服务器。`sshpass`是一个命令行实用程序,它允许用户在不交互输入密码的情况下通过SSH连接到服务器,这对于自动化脚本或批量处理任务非常有用。`sshpass....

    lowjs:Node.JS的端口,具有较低的系统要求。 POSIX系统(例如Linux,uClinux或Mac OS X)的社区版本

    它还可以在基于Linux的系统上运行,作为Node.JS的更小,更快的启动替代方案。 有关low.js的更多信息,请访问 。 该存储库既不包括ESP32内部构件,也不包括Neonious IDE。 因此,大多数开发都发生在存储库之外。 ...

    jellyfin-media-player:基于Plex Media Player的Jellyfin桌面客户端

    支持Windows,Mac OS和Linux。 与Jellyfin Desktop不同,媒体使用jellyfin-web界面在同一窗口中播放。 支持音频直通。 基于 。 资料下载: 相关文件: 相应的Web客户端: API文档 这样的构建消除了播放器中很多...

    protobuff安装包

    通常,protobuf支持多种操作系统,如Linux、Windows和Mac OS。对于不同的操作系统,安装步骤会有所不同。 在Linux系统中,你可以通过包管理器来安装protobuf的依赖项,例如在Ubuntu或Debian上: ```bash sudo apt-...

    ffmpeg0.6.1源码和在windows下编译出来的库

    这些源代码可以在不同的操作系统上编译,包括Linux、Mac OS X以及Windows。 在Windows环境下编译FFmpeg,通常采用MSys和MinGW这两个工具。MSys是一个小型的Unix-like环境,它允许用户在Windows上运行一些基于bash ...

    desmume-0.9.8源代码

    8. `README.LIN`: 这是针对Linux用户的阅读指南,可能会包含如何在Linux环境下安装和使用Desmume的说明。 9. `wxwin.m4`: wxWidgets是一个跨平台的C++库,用于创建GUI应用程序。`wxwin.m4`可能是一个宏文件,用于在...

    libmad库 (源文件+编译(安装)方法)

    - **跨平台**:支持多种操作系统,如Linux、Windows、Mac OS等。 - **API简洁**:提供简洁的C语言接口,方便开发者集成到自己的项目中。 ### 2. 源文件获取 libmad的源代码通常以tar.gz或tbz2格式发布,如你提供的...

Global site tag (gtag.js) - Google Analytics