Linux中关于库的概念

一、概念

库是一个二进制文件,包含的代码可被程序调用。例如标准C库、数学库、线程库...

库有源码,可下载后编译;也可以直接安装二进制包。

库是事先编译好的,可以复用的代码。

在OS上运行的程序基本上都要使用库,使用库可以提高开发效率。

Windows和Linux下的库文件的格式不兼容。

Linux下包含静态库和共享库。

二、静态库

1.静态库特点

编译(链接)时把静态库中相关代码复制到可执行文件中。

程序中已包含代码,运行时不再需要静态库。

程序运行时无需加载库,运行库速度更快。

占用更多磁盘和内存空间。

静态库升级后,程序需要重新编译链接。

2.静态库的创建

1.编写库文件代码,编译为.o目标文件。

2.ar 命令 创建libxxxx.a 文件

ar -rsv libxxxx.a xxxx.o

注意:1静态库名字要以lib开头,后缀名为.a

        2没有main函数的.c文件不能生成可执行文件。

3.链接错误

test.c:(.text+0x15):对‘hello’未定义的引用

collect2: error: ld returned 1 exit status

含义:表示hello函数在编译的源码内没有找到实现

解决:实现代码或者找到对应函数的库并且链接它。

4.链接静态库

        gcc -o 目标文件  源码.c   -L路径    -lxxxx

        -L表示库所在的路径

        -l后面跟库的名称

三、动态库

1.生成位置无关代码的目标文件

        gcc  -c  -fPIC  xxx.c xxxx.c ....

2.生成动态库

        gcc  -shared -o libxxxx.so  xxx.o  xxx.o ....

3.编译可执行文件

        gcc -o 目标文件 源码.c  -L路径  -lxxxx

2.可执行文件错误

./test: error while loading shared libraries: libmyheby.so: cannot open shared object file: No such file or directory

含义:可执行文件所使用的动态库找不到

解决办法:

        找到动态库,添加到/usr/lib里面

        或者使用export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:你的动态库目录

        添加在~/.bashrc 文件里面

        使用source ~/.bashrc 生效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git push出错: src refspec dev/xxx does not match any

使用如下命令gitp push出错: git push origin 远端分支名 git push origin dev/xxxx error: src refspec dev/xxxx does not match any error: failed to push some refs to https://git.woa.com/..... 解决方案 1: git push origin 本地分支名:远端分支名 解决方案2&#…

docker进阶篇,docker集群介绍

docker swarm 官网:https://docs.docker.com/engine/swarm/how-swarm-mode-works/nodes/ 什么是 docker swarm docker swarm 是 docker 官方提供的容器编排和集群管理工具。它允许用户将多个 docker 主机组成一个虚拟的 docker 集群,以便更高效地管理…

互联网环境下工厂生产企业的数字化转型路径研究

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 随着互联网技术的飞速发展,数字化已经成为企业提升竞争力的重要手段。对于工…

LeetCode-热题100:283.移动零

题目描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums…

四信雨水情监测系统,助力构建“三道防线”精准防洪

近年来,我国突破历史记录、颠覆传统认知的水旱灾害频繁发生,依靠传统监测预报手段已难以满足当前洪水防御工作的需求。为贯彻“两个坚持、三个转变”的防灾减灾救灾理念,保障人民群众生命财产安全赢得时机,就必须进一步强化应对洪…

C语言经典面试题目(二十二)

1、解释一下C语言中的预处理器指令及其作用。 预处理器指令是在编译之前由预处理器处理的指令,用于对源代码进行预处理。预处理器指令以#符号开头。常见的预处理器指令包括: #include:用于包含头文件,将指定的文件内容插入到当前…

Cadence OrCAD使用小技巧

Cadence是公司名,Allegro(俗称阿狸狗)是该公司旗下的EDA工具品牌,OrCAD是该公司收购公司的EDA工具品牌。 OrCAD这个产品线是Cadence收购来的,Allegro才是嫡系。 注意:dsn不能放在中文路径下。 开机选captur…

20240316-1-向量化搜索

向量化搜索 在高维空间内快速搜索最近邻(Approximate Nearest Neighbor)。召回中,Embedding向量的搜索。 FAISS、kd-tree、局部敏感哈希、【Amnoy、HNSW】 FAISS faiss是Facebook的AI团队开源的一套用于做聚类或者相似性搜索的软件库&…

golang kafka client 消费者代码

启动kafka [rootlocalhost kafka_2.12-2.5.1] # [kube:] cat start_zk.sh ./bin/zookeeper-server-start.sh config/zookeeper.properties > /dev/null & [rootlocalhost kafka_2.12-2.5.1] # [kube:] cat start_kafka.sh ./bin/kafka-server-start.sh config/server…

go执行go mod tidy时报错连接失败(go换依赖源)

报错: go: cloud.google.com/gov0.41.0: Get "https://proxy.golang.org/cloud.google.com/go/v/v0.41.0.mod": dial tcp 142.251.43.17:443: connectex: A connection attempt failed because the connected party did not properly respond after a pe…

ITK零碎笔记

1、ITK提取等高线&#xff08;区域轮廓&#xff09; itk::ContourExtractor2DImageFilter typedef itk::ContourExtractor2DImageFilter<FSliceType> ContourExtractorType; ContourExtractorType::Pointer contourFilter ContourExtractorType::New(); contourFilter-…

leetcode 2617. 网格图中最少访问的格子数【单调栈优化dp+二分】

原题链接&#xff1a;2617. 网格图中最少访问的格子数 题目描述&#xff1a; 给你一个下标从 0 开始的 m x n 整数矩阵 grid 。你一开始的位置在 左上角 格子 (0, 0) 。 当你在格子 (i, j) 的时候&#xff0c;你可以移动到以下格子之一&#xff1a; 满足 j < k < gri…

蓝桥杯算法练习系统—金属采集(树形dp)

问题描述 人类在火星上发现了一种新的金属&#xff01;这些金属分布在一些奇怪的地方&#xff0c;不妨叫它节点好了。一些节点之间有道路相连&#xff0c;所有的节点和道路形成了一棵树。一共有 n 个节点&#xff0c;这些节点被编号为 1~n 。人类将 k 个机器人送上了火星&…

谷歌地球三维模型

收费工具&#xff0c;白嫖党勿扰 收费金额2000元 0 概述 我也不知道为什么&#xff0c;之前发的谷歌地球三维模型相关的博客&#xff0c;被CSDN屏蔽&#xff0c;我问了客服&#xff0c;客服回答&#xff0c;他也不知道什么原因… 1 折中方案 同学们可以看这篇博客&#xff0…

【网络】:IP协议

IP协议 一.IP报头二.网段划分三.IP地址数量限制四.私有IP地址和公有IP地址五.路由 IP协议就是让数据有能力进行跨网络传输。 一.IP报头 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * …

【CMake】所见所闻所学

Note: 本贴仅记录遇到的CMake的问题&#xff0c;以问题为驱动。 - cmake_minimum_required - project - add_executable - target_include_directories - ExternalProject_Add ExternalProject_Add 是 CMake 中用于管理和构建外部项目的模块。通过 ExternalProject_Add&…

海外客户获取难?海外云手机助力电商引流!

海外电商面临的市场竞争激烈&#xff0c;如何在海外市场获客成为了摆在许多卖家面前的难题。而在这个问题的解决方案中&#xff0c;海外云手机崭露头角&#xff0c;成为助力电商引流的新利器。 在当前市场中&#xff0c;云手机主要用于游戏挂机&#xff0c;但其潜力在海外电商领…

WebGIS航线编辑器(无人机航线规划)

无人机航点、航线规划&#xff0c;实现全自动航点飞行作业及飞行航拍。禁飞区、作业区功能保障飞行安全。 GIS引擎加载 const viewer new Cesium.Viewer("cesiumContainer", { imageryProvider: new Cesium.IonImageryProvider({ assetId: 3872 }), }); const im…

License授权的基本思路

前言 对于收费软件&#xff0c;一般是我们需要去购买一个许可&#xff0c;然后输入这个许可到软件里就能够使用软件。 于是有的小伙伴就开始好奇这个许可是怎么实现的&#xff0c;特别是在离线情况下它是怎么给软件授权&#xff0c;同时又能避免被破解的。 License 内容 一个…

碳素光线疗法——动,植物 光育实验

碳素光线疗法——动&#xff0c;植物 光育实验 碳素光线疗法&#xff1a; 中西医、民间疗法融为一体&#xff0c;提高机体自身治愈力&#xff0c;免疫力&#xff0c;改善体质和保持健康&#xff0c;有助于疾病的预防和治疗的疗法。不吃药、不打针、不手术也能得健康&#xff0c…