静态链接库依赖测试

说明

测试内容:静态库libFun.a的一个函数libFun()依赖于另一个文件vara.c的一个函数varaFun().更改varaFun()内容,测试libFun()的反应。
测试结果:只是链接关系,不用重新编译静态库。程序运行了新的内容。
注意:如果直接用到头文件的结构体,由于头文件会被直接编译进去,所以改变结构体lib并不能更新!!!已测试。


vara.h

#ifndef __VARA_FUN_H__
#define __VARA_FUN_H__

void varaFun(char* str);

#endif

更改前vara.c

#include <stdio.h>
#include "vara.h"


void varaFun(char *str)
{
    printf("%s\n",str);
}

lib.h

#ifndef __LIB_FUN_H__
#define __LIB_FUN_H__


void libFun(char* str);


#endif

lib.c

#include <stdio.h>
#include "vara.h"

void libFun(char* str)
{
    printf("libFun call varaFun:\n");
    varaFun(str);
}

main.c

#include "lib.h"


int main()
{
    libFun("just one");
}

第一次编译:

gcc -c main.c lib.c vara.c

ar -rcs -o libFun.a lib.o //这里不用 vara.o 因为只是链接并不编译进去

gcc -o testMain main.o libFun.a vara.o //这里必须要vara.o 也说明了vara的内容并没有编译到libFun中去,只是建立链接

第一次运行:

./testMain
libFun call varaFun:
just one

更改后的vara.c

#include <stdio.h>
#include "vara.h"


void varaFun(char *str)
{
    printf("yes I'm the varaFun,and the str is:");//增加内容
    printf("%s\n",str);
    printf("work done\n");//增加内容
}

第二次编译:

gcc -c vara.c //只需要重新编译改变的文件
gcc -o testMain main.o libFun.a vara.o

第二次运行:

./testMain
libFun call varaFun:
yes I’m the varaFun,and the str is:just one
work done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值