Linux环境下静态库的生成和使用 (.a文件)

NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty() Please use torch.nn.Module.to_empty() instead of torch.nn.Module.to()输出(llama) (base) [root@localhost home]# nvidia-smi Unable to determine the device handle for GPU0000:09:00.0: Unknown Error。这是典型的“孤儿进程”,但它还是。(僵尸进程),占用 GPU 资源。如果进程仍然不消失,并且。,这意味着它的父进程是。 阅读详情

        这一阵子的工作用到了linux,也用到了linux的静态库和动态库。正好对这一块儿一直不明白,趁此机会学习了一下。以下是笔记。先说一说linux下静态库的生成和使用方法。

     An archive (or static library) is simply a collection of object files stored as a single file.(An archive is roughly the equivalent of a Windows .LIB file.) When you provide an archive to the linker, the linker searches the archive for the object files it needs, extracts them, and links them into your program much as if you had provided those object files directly. 

     You can create an archive using the ar command.Archive files traditionally use a .a extension rather than the .o extension used by ordinary object files. Here’ s how you would combine test1.o and test2.o into a single libtest.a archive:

% ar cr libtest.a test1.o test2.o

     The cr flags tell ar to create the archive.

                                                                             ---摘自《Advanced Linux Programming》

由上面可以看到,linux操作系统中,
1.静态库是一些目标文件(后缀名为.o)的集合体而已。
2.静态库的后缀名是.a,对应于windows操作系统的后缀名为.lib的静态库。
3.可以使用ar命令来创建一个静态库文件。
来看一个实例,根据书中的代码简化的,先看一看可以编译成库文件的源文件中的代码:

  1. /* test.c */
  2. int f()
  3. {
  4. return 3;
  5. }

代码非常简单,只有一句话。我们敲入如下命令:
gcc –c test.c
ar cr libtest.a test.o
会在当前目录下生成一个libtest.a静态库文件。-c表示只编译,不链接。再来看一看如何使用这个库。如下代码:

  1. /* app.c */
  2. #include <stdio.h>
  3. extern int f();
  4. int main()
  5. {
  6. printf(“return value is %d\n”,f());
  7. return 0;
  8. }

敲入如下命令:
gcc –c app.c
gcc -o app app.o -L. –ltest
敲命令的时候要记得将libtest.a文件和生成的app.o文件放在同一个目录(即当前目录)下。这样,敲入命令后,会在当前目录下生成一个名为app的可执行文件。-o表示指定输出文件名。执行一下./app,可以看一看结果:

这就是生成linux下面静态库的简单用法了。

告别龟速下载!保姆级教程:用离线包5分钟搞定Arduino IDE的STM32开发环境(附最新库文件) 本文提供了一套完整的Arduino IDE离线配置方案,帮助开发者5分钟快速搭建STM32开发环境。通过详细的板支持包安装指南、文件校验方法和常见问题解决方案,彻底解决GitHub下载慢的问题,提升开发效率。 阅读详情

相关推荐

STM32CubeMX | HAL库实战:ADC多通道采集模式深度解析(轮询、DMA、TIM触发)

本文深度解析了基于STM32CubeMX与HAL库实现ADC多通道数据采集的三种核心模式:轮询、DMA以及TIM触发DMA。文章通过对比分析,详细阐述了各模式的配置要点、适用场景与潜在陷阱,旨在帮助开发者根据实时性、CPU占用及采样精度等需求,选择并实现高效稳定的多通道数据采集方案。

postgres8guard的博客 971

linux下.a与.os文件的生成与使用

我们通过两个简单的例子来熟悉gcc编译静态库和动态库的具体过程,以及部分注意事项,在二者同时存在的情况下,优先级问题。

qq_56353701的博客 2808

Qt Creator设计器里也能拖拽?5步将你的QML自定义控件变成可视化插件(Qt6.5+)

本文详细介绍了如何在Qt Creator设计器中实现QML自定义控件的可视化拖拽功能(Qt6.5+)。通过5个步骤,从构建可插件化的QML控件基础到部署插件到设计器环境,帮助开发者将自定义控件转化为设计器插件,提升团队协作效率。特别适合需要频繁调整UI样式的开发场景。

weixin_29214559的博客 170

Linux系统中如何添加自己的库文件路径

库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外

lxmky的专栏 892

STM32H743的ADC还能这么玩?定时器触发+DMA搬运,构建低CPU占用的数据流

本文深入探讨了STM32H743微控制器中ADC的高效使用方法,通过定时器触发和DMA搬运技术实现低CPU占用的数据流采集。详细解析了硬件架构、CubeMX配置步骤及高级优化技巧,包括双缓冲技术和多ADC同步采样,适用于电机控制、音频采集等高性能应用场景。

weixin_30698527的博客 647

手把手教你用Gazebo+ROS搭建智能小车机械臂系统(含完整配置文件)

本文提供了一份详细的实践指南,手把手教你使用Gazebo和ROS搭建智能小车机械臂仿真系统。内容涵盖从URDF/Xacro模型设计、Gazebo控制器配置到ROS话题通信与系统集成的完整流程,并提供了可复用的配置文件与调试技巧,帮助开发者快速构建并控制一个功能完备的移动操作机器人平台。

sugar的博客 971

动静态库生成&&使用

🔥🔥 欢迎来到小林的博客!!🛰️博客主页:✈️🛰️博客专栏:✈️🛰️社区 :✈️。

Lin5200000的博客 2714

有源滤波电路设计

目录一、低通滤波器1、同相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(压控电压源;Sallen-Key)2、反相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(无限增益多路反馈)二、高通滤波器1、同相输入高通滤波器(1)一阶高通滤波电路(2)二阶高通滤波电路(压控电压源;Sallen-Key)2、反相输入高通滤波电路(1)二阶高通滤波电路(无限增益多路反馈) 一、低通滤波器 1、同相输入低通滤波器 (1)一阶低通滤波电路 即在一阶无源低通滤波器的基础上,加了一个集成运放。 它的

qq_41873236的博客 3万+

Linux的.a、.so和.o文件

.a .so .o

HeMiJack的博客 4102

老 MacBook 部署 OpenClaw:比 Windows 更稳定

老款 MacBook 在运行 OpenClaw 时,Linux 系统相比 Windows 系统具有更好的稳定性和性能。本文将从多个维度对比 Linux 和 Windows 在老款 MacBook 上运行 OpenClaw 的表现,帮助您选择更合适的操作系统。

一键难忘的博客 2096

基于Simulink环境,提供一个关于如何对无人机电源DC-DC变换器进行仿真建模的示例

无人机电源要求:无人机的各个子系统(如电机、传感器、通信模块等)可能需要不同级别的电压供应。重要性稳定性:稳定的电源是保证无人机各部件正常工作的基础。效率:高效的电源管理可以显著增加飞行时间和任务执行能力。挑战多负载适应性:需要能够为不同负载提供合适的电压和电流。动态响应:快速响应负载变化的能力对于维持系统稳定性至关重要。首先明确要模拟的任务内容。设计一个能够在不同负载条件下为无人机提供稳定电压的DC-DC变换器。根据无人机的工作状态调整控制策略以维持最佳性能。

xiaoheshang_123的博客 134

Linux 环境下gcc生成静态库.a和动态库.so文件以及其使用

静态库(.a)编译时嵌入程序,可独立运行、效率高,但体积大、更新需重编;动态库(.so)运行时加载,体积小、可共享、更新方便,但依赖外部文件。二者均需先编为.o文件,静态库用ar打包,动态库需-fPIC和-shared。嵌入式用静态库,系统级应用选动态库,也可混合用平衡需求。

m20050212的博客 1116

【定位模块项目实战】正态分布变换(NDT)定位及建图(依赖高精度点云地图和三维激光雷达的定位方案)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、正态分布变换(NDT)定位解决的主要问题二、正态分布变换(NDT)定位的核心思想三、NDT算法流程1.多元正态分布概念2.网格化并计算正态分布参数3.变换参数和最大似然四、使用C++实现NDT配准参考资料 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对依赖高精度地图和激光雷达的定位技术–正态分布变换(NDT)定位做个简单的介绍,具体

qq_35635374的博客 4411

Linux环境下静态库和动态库的生成和使用 (.a文件和.so文件)

静态库的生成 Linux环境下静态库的生成和使用 (.a文件) 2.动态库的生成 Linux环境下动态库的生成和使用 (.so文件)

qq_19288615的专栏 545

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【C++】静态库和动态库文件的生成和使用

库文件静态库的生成hello.hhello.cmain.c动态库的生成GCC命令相同时,会先执行.a文件,还是会先执行.so文件?静态库与动态库的区别使用静态库的使用动态库的使用总结本文主要讲解了静态库和动态库的生成,以及.o文件和.so文件的使用。

Friday 7897

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Linux下使用gcc生成静态库.a和调用(图文并茂,坑已踩完)

简 述: 在Linux系统下,使用gcc来编译,生成静态库,且调用静态库.a文件,生成可执行程序。此处例子实际:使用g++9.2在mac平台下完成这个知识点的教程。 文章目录编程环境:静态库概念:前期铺垫:将.cpp生成.o:将.o生成.a:链接库,调用静态函数.a:运行可执行程序成功:源码下载:总结: 编程环境: ????: MacOS 10.14.6 (18G103) ???? gcc/g++ 9....

4472

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

静态库.a的生成和使用

生成.a静态库并使用 参考:https://www.jb51.net/article/225428.htm 什么是静态库 我们通常需要把一些公用函数制作成函数库,供其它程序使用,函数库分为静态库.a和动态库.so两种。 静态库在程序编译时会被链接到目标代码中,程序运行时不再需要该静态库。 动态库在程序编译时并不会被链接到目标代码中,而是在程序运行时才被载入。这样我们可以通过更改动态库,动态的改变程序的某些功能。 Linux下使用ar工具,将目标文件压缩到一起,并且对其进行编号和索引,以便于

weixin_42623551的博客 5090

在Linux系统(Ubuntu)下静态库与动态库文件的生成与使用

一、Linux系统中函数库的类型 函数库分为静态库和动态库。 静态库 在程序编译时会被连接到目标代码中,程序运行是则不需要静态库的存在。 动态库 在程序编译时不会被连接到目标代码中,而是程序运行时载入的。 两者区别:前者是编译连接的,后者是程序运行载入的。 二、hello实例使用库 (一) 创建一个作业目录,保存本次联系文件。 #mkdir test1 #cd test1 三、静态库实例 四、动态库实例 五、总结 六、参考文献 ...

qq_48273416的博客 1474

linux多个.a静态库文件合并为一个 .a静态库文件

gcc ar bash

1287

Linux 静态库 编译和使用

前言: 不管是 Linux 还是 Windows 中的库文件其本质和工作模式都是相同的,只不过在不同的平台上库对应的文件格式和文件后缀不同。程序中调用的库是 静态库。 在项目中使用库一般有两个目的,一个是为了使程序更加简洁不需要在项目中维护太多的源文件,另一方面是为了源代码保密,毕竟不是所有人都想把自己编写的程序开源出来。 静态库: 在 Linux 中静态库由程序 ar 生成。 在 Linux 中静态库以 lib 作为前缀,以.a 作为后缀,中间是库的名字自己指定即可,即: libxxx.a 在 Windo

houxian1103的博客 1万+

linux中静态库编译与使用

linux静态库的编译与连接

计算机视觉算法开发与落地 2703

Linux 下用gcc生成静态库和动态库以及静态库.a与.so库文件的生成与使用

Linux 下用gcc生成静态库和动态库一、用 gcc 生成 .a 静态库和 .so 动态库1.创建一个 test1 文件夹在该文件夹中创建三个子程序 hello.h、hello.c 和 main.c下面展示一些 `内联代码片`2.将 hello.c 编译成.o 文件3.由 .o文件创建静态库4.在程序中使用静态库5.由.o 文件创建动态库文件6.在程序中使用动态库7.当静态库和动态库同名时,gcc 命令会使用哪个库文件二、(1)Linux 下用静态库.a文件的生成与使用1.用 vim编辑器编辑生成所需要的

weixin_46584792的博客 803

用gcc生成静态库和动态库及其文件的生成与使用

文章目录Linux下静态库.o与.so库文件的生成与使用 Linux下静态库.o与.so库文件的生成与使用 创建文件目录

Scorpio_L_的博客 991
上一篇: C语言的int, float,double相互转化 (从本质上理解可能的问题)
下一篇: git删除文件夹/文件(不删除本地文件)
csshuke
博客等级 码龄16年 1517粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值