Chinaunix首页 | 论坛 | 博客
  • 博客访问: 128534
  • 博文数量: 62
  • 博客积分: 1476
  • 博客等级: 上尉
  • 技术积分: 662
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-03 16:38
文章分类

全部博文(62)

文章存档

2010年(14)

2009年(48)

我的朋友

分类: C/C++

2009-12-25 21:26:56

单独使用gcc的时候,不用考虑C_INCLUDE_PATH/CPLUS_INCLUDE_PATH/LIBRARY_PATH/LD_INCLUDE_PATH这些变量,但使用make的时候,就要显示地提供这些变量(如果必要)

静态库的创建与操作:
ar [drqtpmx] [options] archive.a object.o
-d: 从静态库中删除文件objfile
-r: 替换或插入objfile
-q: quick append,加入objfile without checking
-t: type打印静态库中的成员文件列表
-p: Print指定objfile
-m: move移动archive中的成员
-x: extract从静态库文件中抽取文件objfile
-c: 创建静态库文件
-s: 重置静态库文件索引

eg.释放静态库文件
#ar -x /usr/lib/libc.a
#ls *.o
_ctype.o
_cvt.o
...
xcvt.o
xstat.o

eg.创建静态库文件
#ar -svr libccc.a xcvt.o xstat.o
Creating libccc.a
#ar -t libccc.a
xcvt.o
xstat.o

eg.将静态库libpr.a相关代码链接到目标文件中
#cc main.c -L./ -lpr

#cc main.c ./libpr.a
其中-L./表在当前文件夹下寻找静态库


例程:

pr1.c

#include <stdio.h>

void print1()
{
    printf("This is the first static lib provided function: print1().\n");
    return;
}

pr2.c

#include <stdio.h>

void print2()
{
    printf("This is the second static lib provided function: print2().\n");
    return;
}

main.c

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    print1();
    print2();

    return 0;
}

Makefile

lib:
    gcc -O -c pr1.c pr2.c
    ar -rv libpr.a pr1.o pr2.o

check:
    ar -t libpr.a

test:
    gcc -O -o main main.c -L./ -lpr
    #gcc -O -o main main.c ./libpr.a
clean:
    rm -f pr1.o pr2.o libpr.a main


阅读(780) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~