Linux下静态库的制作与使用

部分内容转自:Linux系统中“动态库”和“静态库”那点事儿
制作静态链接库的过程中要用到 gccar 命令。

准备两个库的源码文件fun1.c和fun2.c

fun1.c

#include<stdio.h>
void fun1()
{
    printf("This is fun1\n");
}
View Code

fun2.c

#include<stdio.h>
void fun2()
{
    printf("This is fun2\n");
}
View Code

用fun1.c和fun2.c制作库libtest.a

root@ubuntu:~# gcc -c fun1.c fun2.c
root@ubuntu:~# ll fun*.o
-rw-r--r-- 1 root root 1504 Oct 21 00:50 fun1.o
-rw-r--r-- 1 root root 1504 Oct 21 00:50 fun2.o
root@ubuntu:~# file fun1.o
fun1.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
root@ubuntu:~# ar -rsv libtest.a fun1.o fun2.o
ar: creating libtest.a
a - fun1.o
a - fun2.o
root@ubuntu:~# ls
fun1.c  fun1.o  fun2.c  fun2.o  libtest.a
root@ubuntu:~# file libtest.a 
libtest.a: current ar archive
View Code

测试程序来调用库libtest.a

main.c

#include<stdio.h>
int main(int argc,char **argv)
{
    fun1();
    fun2();
    return 0;
}
View Code

带上libtest.a编译

root@ubuntu:~# gcc -o test main.c -L./ -ltest
root@ubuntu:~# ./test 
This is fun1
This is fun2
View Code

gcc的参数-L是告诉编译器库文件的路径是当前目录,-l是告诉编译器要使用的库的名字叫test。

 

posted @ 2018-10-21 00:58 克拉默与矩阵 阅读(...) 评论(...) 编辑 收藏