linux 创建路径函数,Linux函数库的创建方法(2)

2. 静态库的创建与使用

静态库本质就是一组 .o 组成的压缩文件,扩展名为 .a / .lib

代码如下:

ar -crv libXXX.a mmmm.o nnnn.o

XXX 是库名,mmmm.o nnnn.o 是要打包的目标文件。crv 参数,含义分别是

c: do not warn if the library had to be created

r: replace existing or insert new file(s) into the archive

v: be verbose

使用时,只需在代码中引入 头文件,链接时,指定静态库的搜索路径(-L选项)和静态库名(不需要lib前缀和.a后缀,-l选项)。

代码如下:

g++ test.cpp -L.。/StaticLibrary -lXXX

3. 动态库

Window与Linux执行文件格式不同,在创建动态库的时候有一些差异。

Windows 下执行文件是 PE 格式,动态库需要一个DllMain函数做出初始化的入口,通常在导出函数的声明时需要有_declspec(dllexport)关键字。

Linux下 gcc 编译的执行文件默认是 ELF 格式,不需要初始化入口,亦不需要函数做特别的声明,编写比较方便。

linux 下动态库的命名格式同静态库,为 libXXX.so 格式。

动态库的创建,使用编译器即可,不需要像静态库一样使用专门的打包工具。

若要创建动态库,源码编译时添加 -fPIC 选项,链接时添加 -shared 选项。

代码如下:

g++ -fPIC -shared -o libXXX.so xxx.cpp

用法同静态库,

代码如下:

g++ test.cpp -L.。/DynamicLibrary -lXXX

只是需要设置下搜索路径。默认搜索路径:/lib/, /usr/lib。

设置搜索路径:

编辑 /etc/ld.so.conf,设置搜索路径

运行 ldconfig ,重建 /etc/ld.so.cache 文件。设置生效。

4. 相关工具

ldd 查看程序依赖的共享库(动态库)

代码如下:

gcc / g++ 参数 -I(大写 ‘i’),-L(大写‘l’),-l(小写‘L’)

1、 -I(大写 ‘i’) 头文件目录

2、-L(大写‘l’) 库目录

3、-l(小写‘L’) 库名

大写是目录,小写是库。

上面就是Linux中静态库和动态库的创建介绍了,通过本文的介绍相信你已经对Linux库有了一定的了解,静态库和动态的后缀名分别是.a和.so,可别弄错了哦。

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

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

相关文章

文件被后台程序占用无法删除_win10重装后系统占用50G?只要做好这2步,运行比win7还快...

大家都清楚系统C盘是电脑的"生命",一旦C盘出现"爆红",那你离电脑死机也就不远了。如果你还无法体会到这种感觉,那你可以想象打开一个word文档都要看到鼠标在转圈,随即黑屏,啥都动不了的那种生无可…

plsql执行command命令控制台出现乱码_展现“管理员”的神级能力,有趣又实用的我的世界基础命令...

在上一篇文章《Minecraft基岩版(手机版、便携版、PE版)开服指南》中,我们介绍了《我的世界》基岩版的开服方法。然后这篇文章,就为那些了解更多细节的玩家,介绍一下常见的管理员命令。另外,由于《我的世界》有多个版本(JAVA版、基…

一键 linux桌面安装vnc,Ubuntu 16.04 LTS一键安装VNC

Ubuntu 16.04 LTS 安装VNC,在搜索上找了很多教程,不是太老,就是说的驴唇不对马嘴,所以忍不住写一些以正视听。Ubuntu 16.04 LTS是最近出的LTS版本系统,估计未来也会有长期的使用频率,配置好远程桌面&#x…

新一代人工智能发展规划_助力人工智能创新发展,新华三任合肥市新一代人工智能产业发展联盟理事单位...

近日,合肥市新一代人工智能产业发展联盟正式成立。合肥市委常委、常务副市长罗云峰出席成立大会并讲话,联盟相关指导单位领导、理事单位成员代表等参加会议。会上,紫光旗下新华三集团下属新华三信息安全技术有限公司副总裁王冬作为理事单位代…

sqlserver 查询中文查询不到 查询英文可以查到_估值数据和财报数据查询方法

为了让更多的读者朋友学会自己查阅估值数据和财报数据,根据自己查到的资料进行独立思考,帮助投资,二师父搜集整理了估值数据和财报数据的查询网站,并教给大家如何通过这些网站查阅到的数据来做投资决定。估值数据查询网站&#xf…

linux内核参数的程序,技巧-Linux内核参数调整办法

ulimit设置ulimit -n 要调整为100000甚至更大。 命令行下执行 ulimit -n 100000即可修改。如果不能修改,需要设置 /etc/security/limits.conf,加入* soft nofile 262140* hard nofile 262140root soft nofile 262140root hard nofile 262140* soft core …

java面试换背景颜色_实习|渣二本Java菜鸡0 Offer的春招血泪史,一定要主动去找实习呀!

作者:codingCoge链接:https://www.nowcoder.com/discuss/177823来源:牛客网前言:一个菜鸡的春招血泪史,共勉到现在还是0offer先玄学求一波Offer2019.3.27更新:三月快结束了,对我来说春招也基本落幕了.虽然好多大厂4月才开始招聘,不过我已经不…

python刷阅读_用Python汇集并生成每日教育动态

本文记录了“每日教育动态”想法的产生以及实现过程,分为三部分:想法由来及实现效果、实现步骤和实现后的一点想法。一、想法由来及实现效果教育学是一门理论与实践相结合的学科,实践起来人人都会,每天打开手机刷个公众号都是完成…

linux切换root报错,Linux用户切换到root后运行图形程序报错(*GLib-GIO-CRITICAL **)

用su切换到root用户后,运行某些带图形的程序,会报如下错误:(ImageProc_qt:3158): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion G_IS_DBUS_CONNECTION (connection) failed(ImageProc_qt:3158): GLib-GIO-CRITICAL *…

python程序打包多个py文件_不使用setup.py,打包 Python 项目

我编写了许多开源项目,并允许其他人通过PyPI访问这些项目。为此,我需要从这些项目构建一个源代码分发版(sdist)和一个可选的wheel包,并将二者上传到PyPI。最后,这个sdist和wheel包必须要能通过pip进行安装,以便其他人使…

软件工程软件开发成本度量规范_软件开发成本度量方法

软件成本度量一直都是软件行业的一个痛点问题。软件度量一度乱象丛生。拍脑袋的定价方式曾大行其道。软件成本度量的乱象直接导致了软件价格的诸多问题。比如预算费用存在浪费或不足的现象,招标存在投标额过低过高等非正常状况。这些情况都是因为度量标准的缺失&…

linux 神的编辑器,编辑器之神-vim的使用,编辑器神-vim

编辑器之神-vim的使用,编辑器神-vimvim即vi的升级版;在linux中,vi是vim的软链接,我们敲vi和vim出来的都是vim;纯手打,如有错误,敬请指出。vi的三种模式及简单使用vi三种模式命令模式(默认)&…

爬虫python下载视频_用python做爬虫下载视频

用python有一段时间了,对python是十二分喜爱,在我看来python是个好工具,可以轻松简洁的帮我完成一些我想要完成的工作。下面和大家分享一下我用python爬取某网站视频的案例。用python去保存网站的视频,主要是为了后续的查看和备份…

python3软件怎么用_Python3学习之路~4.4 软件目录结构规范

为什么要设计好目录结构?可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。可维护性高: 定义好组织规则后,维护者…

linux安装nginx1.9,CentOS7.2安装Nginx 1.9

今天在最新的centos7.2上安装nginx1.9,希望安装流程对你有所帮助,一定要查看对应centos的版本。一、确认一下centos的版本[rootlocalhost ~]# cat /etc/redhat-releaseCentOS Linux release 7.2.1511 (Core)二、安装依赖包和开发工具:yum ins…

python获取文件夹下文件_Python 获取指定文件夹下的目录和文件的实现

经常有需要扫描目录,对文件做批量处理的需求,所以对目录处理这块做了下学习和总结。Python 中扫描目录有两种方法:os.listdir 和 os.walk。 一、os.listdir 方法 os.listdir() 方法用于返回指定的目录下包含的文件或子目录的名字的列表。这个…

数据挖掘算法_算法篇(01) 数据挖掘算法初探

前言无论是传统行业,还是互联网行业。掌握数据,就是掌握规律。当你了解了市场数据,对它进行分析,就可以得到市场规律。当你掌握了产品自身的数据,对它进行分析,就可以了解产品的用户来源、用户画像等等。所…

java中怎么判断一段代码时线程安全还是非线程安全_24张图带你彻底理解Java中的21种锁...

(给ImportNew加星标,提高Java技能)转自:悟空聊架本篇主要内容如下:本篇文章已收纳到我的 Java 在线文档、 Github。我的 SpringCloud 实战项目持续更新中。帮你总结好的锁:序号锁名称应用1乐观锁CAS2悲观锁synchronized、vector、…

linux安装icc步骤,怎麼安装不到 icc?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我是用 arch linux, 安装的 icc 版本是 2011.11.339(ia32 x86_64)错误如下:Step no: 5 of 6 | Installation--------------------------------------------------------------------------------Each component will be installed…

利用python制作漂亮的词云图_利用python制作漂亮的词云图

新建一个新的目录随便找个地方新建一个目录,比如我在F盘下面新建一个word_cloud文件夹(名字都是随便取),并且打开这个文件夹.把刚刚下载的msyh.ttc复制到这里.新建一个my_word_cloud.py在这里.然后可以在my_word_cloud.py写代码了,首先导入相关的包##对于NLP(自然语言处理)来说…