当前位置: 首页 > 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.选项

http://www.dtcms.com/a/31057.html

相关文章:

  • 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 常见状态码技术解析(应用层)
  • Blender小技巧和注意事项
  • 如何在 Linux 内核中实现自定义协议族并使用 Socket 通信
  • c++ std::vector使用笔记
  • 【联盛德 W803-Pico 试用】简介、工程测试
  • 安装可视化jar包部署平台JarManage
  • 【算法系列】leetcode1419 数青蛙 --模拟
  • ROS2下编写package利用orbbec相机进行yolov8实时目标检测
  • iOS端集成人脸识别功能、人证合一、JavaScript接口集成
  • ChatGPT超级AI对话模型 黑客十问十答
  • Hadoop-HA集群部署