- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用 Automake 生成 Makefile 及动态库和静态库的创建
使用 Automake 创建和使用静态库
1. 目录结构如下:
[c-sharp] view plaincopy
1. example
2. | ——src 目录(存放源代码文件)
3. | ——hello.c
4. | ——lib 目录(存放用来生成库的文件)
5. | ——test.c 用来生成静态库 libhello.a
6. | ——include 目录(存放程序中使用的头文件)
7. | ——hello.h
2. 编写的各个目录下的源文件
[c-sharp] view plaincopy
1. hello.h 文件
2. extern void print( char *);
3. test.c 文件
4. #include<stdio.h>
5. void print( char *msg)
6. {
7. print( “%s/n ”, msg);
8. }
9. hello.c 文件
10. #include “hello.h ”
11. int main()
12. {
13. print( “Hello static library! ” );// 这里用到的是静态库中的函数
14. return 0;
15. }
3. 编写 lib/Make 文件
[c-sharp] view plaincopy
1. noinst_LIBRARIES=libhello.a
2. libhello_a_SOURCES=test.c
3. AUTOMAKE_OPTIONS=foreign
第一行 noinst 表示生成的是静态库,不需要 make install ,直接制定它的位
置和名字就
可以使用。
第二行表示用来生成静态库的源文件。如果要把静态库生成到其他地方,可以
在 =后面
加上路径(建议用绝对路径,并将所要用到的静态库生成在同一个文件夹下,
如 lib )。
第三行 AUTOMAKE_OPTIONS是 Automake 的选项。Automake 主要是帮助开发 GNU
软
件的人员来维护软件,所以在执行 Automake 时,会检查目录下是否存在标准
GNU软件中
应具备的文件, 例如 'NEWS' 、'AUTHOR'、 'ChangeLog' 等文件。设置为 foreign
时,Automake
会改用一般软件的标准来检查。如果不加这句的话,需要在 autoconf 之前,先
执行 touch NEWS
README AUTHORS ChangeLog来生成 'NEWS'、'AUTHOR'、 'ChangeLog' 等文件
4. 编写 src/Make 文件
[c-sharp] view plaincopy
1. AUTOMAKE_OPTIONS=foreign
2. INCLUDES= -I../include
3. bin_PROGRAMS=hello
4. hello_SOURCES=hello.c
5. hello_LDADD=../lib/libhello.a
第二行指定头文件的位置, -I 是 idirafter 的缩写。 ../include 指定头文件
的位置, .. 是上
一级目录,也就是这里的 example 目录。
第三行指定生成可执
文档评论(0)