当前位置: 首页 > news >正文

Linux C 静态库如何生成并使用

1. 编写源文件

首先创建一个简单的示例项目,包含一个头文件和一个源文件。

头文件 my_lib.h
// my_lib.h
#ifndef MY_LIB_H
#define MY_LIB_H

// 函数声明
int add(int a, int b);

#endif
源文件 my_lib.c
#include <stdio.h>

void print_hello() {
    printf("Hello from yy.c!\n");
}
2. 编译源文件生成目标文件

使用 gcc 编译器把 yy.c 编译成目标文件 yy.o

gcc -c yy.c
3. 创建静态库

运用 ar 命令把 yy.o 打包成静态库 libxx.a

ar -cr libxx.a yy.o
4. 使用静态库

编写一个主程序 main.c 来使用这个静态库:

// main.c
#include <stdio.h>

// 声明静态库中的函数
void print_hello();

int main() {
    print_hello();
    return 0;
}
5. 编译并链接主程序

使用 gcc 编译 main.c 并链接 libxx.a 静态库:

  • -L.:指定静态库的搜索路径为当前目录。
  • -lxx:链接名为 libxx.a 的静态库(注意:-l 后面的名字是去掉 lib 前缀和 .a 后缀的部分)。
gcc -o main main.c -L. -lxx

6.头文件搜索路径 

在编译 C 或 C++ 程序时,编译器需要找到所包含头文件的位置。gcc 和 g++ 等编译器默认会在一些标准目录中搜索头文件,其中就包括 /usr/local/include

如果把.a文件拷贝到/usr/local/lib 和.h头文件copy到 /usr/local/include下。 那么可以省略-L.选项

相关文章:

  • Javascript使用Sodium库实现 aead_xchacha20poly1305_ietf加密解密,以及与后端的密文交互
  • Web 自动化测试提速利器:Aqua 的 Web Inspector (检查器)使用详解
  • MySQL 选择数据库
  • SQL Server 创建用户并授权
  • 【算法基础】--前缀和
  • Spring全面讲解(无比详细)
  • [Android]DialogLifeCycle禁止点击背景关闭弹窗
  • 0099__Visual Studio 引入外部静态库与动态库
  • MySQL 插入更新语句(insert…on duplicate key update语句 )
  • VMware安装Centos 9虚拟机+设置共享文件夹+远程登录
  • 跳跃游戏(力扣55)
  • Python爬虫基础文件操作
  • 【OS安装与使用】part6-ubuntu 22.04+CUDA 12.4运行MARL算法(多智能体强化学习)
  • python学习
  • Jenkins整合Jmeter实现接口自动化测试
  • nacos编写瀚高数据库插件
  • 【Linux专栏】rsync 同步文件时自动创建目录
  • VMWare安装Debian操作系统
  • Could not download npm for node v14.21.3(nvm无法下载节点v14.21.3的npm)
  • HTTP 常见状态码技术解析(应用层)
  • 特朗普称即将与伊朗达成核协议,外交部:中方愿继续发挥建设性作用
  • 四川甘孜炉霍县觉日寺管委会主任呷玛降泽被查
  • 哪种“网红减肥法”比较靠谱?医学专家和运动专家共同解答
  • 女外交官郑璇已任中国驻莫桑比克大使
  • 视频|王弘治:王太后,“先天宫斗圣体”?
  • 人民日报钟声:通过平等对话协商解决分歧的重要一步