automake 使用库文件
2015-11-09 11:33
267 查看
****************************************
automake 使用库文件
****************************************
--------------------
1. 准备素材.
--------------------
a. mkdir hello; //创建hello 目录
b. cd hello; mkdir src; mkdir lib; // 在hello 下创建src 和 lib 两个目录
c. 在lib 目录下创建sayHello.h, sayHello.c, 在src 目录下创建main.c
其中main.c 会调用lib目录下的sayHello 函数
具体代码:
--------------------
2.
创建Makefile.am;
lib/Makefile.am;
src/Makefile.am,
内容如下:
--------------------
--------------------
3.
autoscan;
mv configure.scan configure.ac;
vim configure.ac.
修改为如下形式
--------------------
--------------------
5. automake -a //生成Makefile.in
6. ./configure //生成Makefile
7. make // 编译。
--------------------
注意问题:
注意书写语法: AUTOMAKE_OPTIONS, SUBDIRS, SOURCES, LDADD, CFLAGS
AM_INIT_AUTOMAKE, AC_PROG_RANLIB
这是个简单的示例,注意从其它开源项目中学习,automake就可以登堂入世了.
其他像动态库链接,其它关键字等,通过学习可以得到
automake 使用库文件
****************************************
--------------------
1. 准备素材.
--------------------
a. mkdir hello; //创建hello 目录
b. cd hello; mkdir src; mkdir lib; // 在hello 下创建src 和 lib 两个目录
c. 在lib 目录下创建sayHello.h, sayHello.c, 在src 目录下创建main.c
其中main.c 会调用lib目录下的sayHello 函数
具体代码:
~/hello$ cat lib/s sayHello.c sayHello.h ~/hello$ cat lib/sayHello.h #ifndef _HELLO_H #define _HELLO_H void sayhello(); #endif ~/hello$ cat lib/sayHello.c #include <stdio.h> #include "sayHello.h" void sayhello() { printf("hello\n"); } ~/hello$ cat src/main.c #include <stdio.h> #include "sayHello.h" int main(int argc, char *argv[]) { sayhello(); }
--------------------
2.
创建Makefile.am;
lib/Makefile.am;
src/Makefile.am,
内容如下:
--------------------
~/hello$ cat Makefile.am AUTOMAKE_OPTIONS=foreign SUBDIRS=lib src ~/hello$ cat lib/Makefile.am AUTOMAKE_OPTIONS=foreign noinst_LIBRARIES=libmytest.a libmytest_a_SOURCES=sayHello.h sayHello.c ~/hello$ cat src/Makefile.am AUTOMAKE_OPTIONS=foreign bin_PROGRAMS=hello hello_SOURCES=main.c hello_LDADD=../lib/libmytest.a #INCLUDES = -I../lib CFLAGS += -I../lib
--------------------
3.
autoscan;
mv configure.scan configure.ac;
vim configure.ac.
修改为如下形式
--------------------
~/hello$ cat configure.ac # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([hello], [1.0], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([src/main.c]) #AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE(hello,1.0) # manully add # Checks for programs. AC_PROG_CC AC_PROG_RANLIB # manully add # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile lib/Makefile src/Makefile]) AC_OUTPUT 4. aclocal, autoconf
--------------------
5. automake -a //生成Makefile.in
6. ./configure //生成Makefile
7. make // 编译。
--------------------
注意问题:
注意书写语法: AUTOMAKE_OPTIONS, SUBDIRS, SOURCES, LDADD, CFLAGS
AM_INIT_AUTOMAKE, AC_PROG_RANLIB
这是个简单的示例,注意从其它开源项目中学习,automake就可以登堂入世了.
其他像动态库链接,其它关键字等,通过学习可以得到
相关文章推荐
- Android编译系统详解(一)
- 从单线程到多线程之线程通信
- 交叉编译 json
- kettle连接hive错误
- 给定的逗号分隔的数字字符串转换为Table
- 很多时候真是莫名其妙的
- win7开机报错“0x7ccaaa9b指令引用的内存”的原因以及解决方法
- 使用WebView时请使用RelativeLayout
- oracle自定义函数
- Android中Snackbar的介绍以及使用
- Android中Snackbar的介绍以及使用
- opengl和osg的坐标系统
- iOS 下,UILable自适应高度的方法
- (学习笔记)android 5.0 系统去电流程状态判断(上)
- 阅读 JAVA并发编程实战 (一)
- sql 列集合转换成逗号分隔的字符类型
- Scktsrvr.exe的源程序
- Cheerio,服务端的JQuery。
- ubuntu使用遇到的问题
- 基本的UI控件和布局文件