makefile链接静态库

先来看个例子:

先写一下实现加减功能的子函数。主函数要调用另一个c文件里面的函数,一般是通过共同包含同一个.h文件实现的。

// filename add_minus.h
#ifndef __ADD_MINUS_H__
#define __ADD_MINUS_H__

int add(int a, int b); 
int minus(int a, int b); 

#endif /*__ADD_MINUS_H__*/

 

我们的功能函数add_minus.c:

// filename add_minus.c
#include"add_minus.h"
int add(int a, int b)
{
  return a+b;
}
int minus(int a, int b)
{
  return a-b;
} 

gcc -c add_minus.c 
编译生成 add_minus.o

ar rc libadd_minus.a add_minus.o

生成静态库

主函数:

#include<stdio.h>
#include"add_minus.h"
int main()
{
  printf("hello\n");
  printf("%d\n",add(1,2));
  printf("%d\n",minus(1,2));
  return 0;
}
gcc -c main.c
生成main.o

链接静态库

上节的1~3已经得到了libadd_minus.a和main.o文件,这一步需要把这两个文件链接起来

 

gcc -o main2 main.o -L./ -ladd_minus

说明1:-L./表明库文件位置在当前文件夹

说明2: -ladd_minus 表示链接 libadd_minus.a 文件,使用“-l”参数时,前缀“lib”和后缀“.a”是需要省略的。

如果我们在链接的时候提示“未定义的引用”从两方面考虑定位:

1、是否链接成功

2、利用grep "add" libadd_minus.a 来查看静态库中是否有这个接口函数

参考了文档:
链接:https://www.jianshu.com/p/5ee9d6f93522
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值