1.编译源码
2.制作库
=====================================
以两个简单的源码为例,示范静态库制作的具体流程
1.编译源码
hello_first.c
void hello_first(void)
{
printf(“hello first”)
}
hello_second.c
void hello_second(void)
{
printf(“hello second”)
}
编译:
gcc -c hello_first.c -o hello_first.o
gcc -c hello_second.c -o hello_second.o
2.制作静态库
ar -r libhello.a hello_first.o hello_second.o
具体调用库实例
hello_main.c
#include 《stdio.h》
void hello_first(void)
void hello_second(void)
int main()
{
hello_first()
hello_second()
return 0
}
编译:
第一种方法:
gcc hello_main.c libhello.a -o hello_main
第二中方法:
拷贝libhello.a到/lib目录下
gcc hello_main.c -lhello -o hello_main2
创建并使用静态库第一步:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。
vi test.h test.c main.c
第二步:将test.c编译成目标文件。
gcc -c test.c
如果test.c无误,就会得到test.o这个目标文件。
第三步:由.o文件创建静态库。
ar rcs libtest.a test.o
第四步:在程序中使用静态库。
gcc -o main main.c -L. -ltest
因为是静态编译,生成的执行文件可以独立于.a文件运行。
第五步:执行。
./main
示例四 创建并使用动态库
第一步:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。
vi test.h test.c main.c
第二步:将test.c编译成目标文件。
gcc -c test.c
前面两步与创建静态库一致。
第三步:由.o文件创建动态库文件。
gcc -shared -fPIC -o libtest.so test.o
第四步:在程序中使用动态库。
gcc -o main main.c -L. -ltest
当静态库和动态库同名时,gcc命令将优先使用动态库。
第五步:执行。
LD_LIBRARY_PATH=. ./main
示例五 查看静态库中的文件
[root@node56 lib]# ar -t libhycu.a
base64.c.o
binbuf.c.o
cache.c.o
chunk.c.o
codec_a.c.o
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)