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

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.选项


http://www.kler.cn/a/558099.html

相关文章:

  • Leetcode K个一组翻转链表
  • win10把c盘docker虚拟硬盘映射迁移到别的磁盘
  • MySQL(高级特性篇)11章——数据库的设计规范
  • 装箱和拆箱是什么?(C#)
  • 【hot100】240搜索二维矩阵
  • A097基于SpringBoot实现的社区博客管理系统
  • vue-treeselect显示unknown的问题及解决
  • 安卓好软-----车机端 安卓tv端很好用的应用管家 adb 授权等等功能
  • 嵌入式0xDEADBEEF
  • 酒店旅游API:数据交互的隐形桥梁——以携程API为例
  • Android-Skin-Loader 换肤框架不支持多个activity同时换肤问题处理
  • Ubuntu DeepSeek磁盘空间不够解决办法
  • linux有名管道
  • 鸿蒙开发技术指南:从入门到精通
  • LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
  • 技术解析 | 适用于TeamCity的Unreal Engine支持插件,提升游戏构建效率
  • netty基础知识梳理和总结
  • 数据库面试知识点总结
  • [Android]浏览器下载的apk文件无法识别无法安装问题
  • 《AI与NLP:开启元宇宙社交互动新纪元》