一个比较简单的Linux下制作静态库的例子

2009年09月18日 17:09    f.luo
关键词: Linux , 静态库
看书的时候发现个小例子,感觉不错。
分享一下,高手就不用来浪费时间了。
Linux下如何把自己写的函数做成静态编译库。
    这个例子中,我们创建了一个我们自己的小小的库,该库包含两个函数。而在例子中,我们使用了其中一个函数。这两个函数分别为fredbill,作用为打印问候语。
    首先,为每一个函数各创建一个独立的源程序。建立两个C文件,分别为fred.c和bill.c简单看下面的代码。
第一个:

  1. #include <stdio.h>
  2. void fred(int arg)
  3. {
  4.          printf(“fred: we passed %d\n”,arg);
  5. }
复制代码
第二个:

  1. #include <stdio.h>
  2. void bill(char *arg)
  3. {
  4.       printf(“bill: we passed %s\n", arg);
  5. }
复制代码
现在可以编译这些函数。使用gcc-c参数。编译:
  1. $ gcc -c bill.c fred.c
  2. $ ls *.o
  3. bill.o      fred.o
复制代码
头文件为了便于以后调用,编写个头文件,文件名为lib.h:
  1. /*
  2. This is lib.h. It declares the functions fred and bill for users
  3. */
  4. void bill(char *);
  5. void fred(int);
复制代码


好了,可以写主程序了.主程序调用函数bill()。
  1. #include <stdlib.h>
  2. #include “lib.h”
  3. int main()
  4. {
  5.     bill(Hello World);
  6.     exit(0);
  7. }
复制代码
用到的文件都完成了,下面主要是编译。
欢迎分享本文,转载请保留出处:http://www.eechina.com/thread-4333-1-1.html     【打印本页】
f.luo 发表于 2009-9-18 17:44:55
本帖最后由 f.luo 于 2009-9-18 18:12 编辑

现在可以进行进行编译和测试了

  1. $ gcc -c program.c
  2. $ gcc -o program program.o bill.o
  3. $ ./program
  4. bill: we passed Hello World
  5. $
复制代码

没有错误的话应该会输出

  1. bill:wo passed Hello,World
复制代码

现在创建和使用库函数
  1. $ ar crv libfoo.a bill.o fred.o
  2. a - bill.o
  3. a - fred.o
复制代码

现在库函数创建成功,两个目标函数已经添加成功了
继续:
  1. $ ar crv libfoo.a bill.o fred.o
  2. a - bill.o
  3. a - fred.o
复制代码

现在可以使用创建的库函数进行编译了
删掉原来的program二进制文件
  1. $ gcc -o program program.o libfoo.a
  2. $ ./program
  3. bill: we passed Hello World
  4. $
复制代码

OK,不出错误的话应该成功了。
kendying 发表于 2009-9-22 00:30:40
受教!
您需要登录后才可以发表评论 登录 | 立即注册

相关文章

相关视频演示

厂商推荐


关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备11013910号 | 京公网安备11010502021702
回顶部