用gcc生成静态库和动态库并链接生成可执行文件

本文讲述了如何用GCC创建C++的静态库和动态库,包括源码准备、编译、链接过程,并通过实例说明了两者在程序中的应用和差异。

用gcc生成静态库和动态库并链接生成可执行文件

一、用gcc生成静态库和动态库

1.源程序准备

创建并以以下名字命名文件:

  • Hello.h

    #ifndef HELLO_H
    #define HELLO_H
    void Hello(const char*name);
    #endif
    
  • 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				//查看当前目录内是否生成Hello.o文件

在这里插入图片描述

3.生成与使用静态库

ar-crv libHello.a Hello.o
在这里插入图片描述

gcc -o Hello main.c -L. -lHello
在这里插入图片描述

gcc-o main.c libHello.a -o Hello
在这里插入图片描述
main.o gcc -c main.c
gcc -o Hello main.c libHello.a
在这里插入图片描述
验证静态库的特点。
在删除静态库后运行可执行文件,程序依旧正常运作。这表明静态库不影响程序的运行,也表明静态库在程序编译时就已经与代码链接。

rm libHello.a
在这里插入图片描述

4.生成与使用动态库

(1)创建动态库

gcc -shared -fPIC -o libHello.so Hello.o
在这里插入图片描述

(2)执行动态库

sudo mv libmyhello.so /usr/lib //启用管理员权限移动文件到对应文件夹内,否则无法找到文件执行

gcc -o Hello main.c -L. -lHello
在这里插入图片描述
在这里插入图片描述
gcc编译得到.o文件 gcc -c Hello.c
创建静态库 ar -crv libHello.a Hello.o
创建动态库 gcc -shared -fPIC -o libHello.so Hello.o
使用库生成可执行文件 gcc -o Hello main.c -L. -lHello
执行可执行文件 ./Hello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值