用gcc生成静态库和动态库以及静态库.a与.so库文件的生成与使用

一·用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.比较

静态库生成文件比动态库小,但生成的可执行文件几乎一样大

四.总结

注意命令的空格,符号。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值