一·用gcc生成静态库和动态库
1.编辑并生成hello.h,hello.c和main.c
输入命令mkdir test1创建目录,cd test1进行操作
命令vim hello.h,输入i进入编辑模式
输入
#ifndef HELLO_H
#define HELLO_H
void hello(const char *name);
#endif //HELLO_H
按esc,:后输入wq保存并退出
用同样操作创建hello.c,main.c文件
hello.c
#include<stdio.h>
void hello(const char *name)
{
printf("Hello %s!\n",name);
}
main.c
#include"hello.h"
int main()
{
hello("everyone");
return 0;
}
2.将hello.c编译成.o文件
输入命令gcc -c hello.c
输入ls查看
3.由.o文件创建静态库
输入命令ar -crv libmyhello.a hello.o
输入ls查看
4.在程序中使用静态库
输入命令gcc -o hello main.c -L. -lmyhello
输入./hello查看运行结果
5.由.o文件创建动态库
输入命令gcc -shared -fPIC -o lobmyhello.so hello.o
输入ls查看
6.在程序中使用动态库
输入命令gcc -o hello main.c -L. -lmyhello
输入./hello查看运行结果
第一次发现报错,提示找不到动态库文件libmyhello.so
输入sudo mv libmyhello.so /usr/lib将文件复制到lib中
再次运行,发现成功,说明在程序运行时需要动态库。
二.静态库.a与.so库文件的生成与使用
(1)输入命令mkdir test2 创建目录,输入cd test2进行编辑
(2)使用vim编译A1.c
(3)使用vim编译A2.c
(4)使用vim编译A.h
(5)使用vim编译test.c
将<A.h>改为“A.h”
1.静态库.a的生成与使用
1)输入命令gcc -c A1.c A2.c
输入ls查看
2)生成静态库.a文件
输入ar crv libfile.a A1.o A2.o
3)使用.a库文件创建可执行文件
输入gcc -o test test.c libfile.a
2.静态库.so库文件的生成与使用
1)输入gcc -c -fpic A1.c A2.c
2)生成共享库.so文件
输入gcc -shared -fPIC -o libfile.so A1.o A2.o
3)使用.so库文件创建可执行文件
输入gcc -o test test.c libfile.so
运行test
三.程序改编
1.相应程序
sub1.c
sub2.c
sub.h
main.c
输入命令查看
2.生成静态库文件
3.生成动态库文件
4.比较
静态库生成文件比动态库小,但生成的可执行文件几乎一样大
四.总结
注意命令的空格,符号。