(2) 你编制了一個有价值的算法、或有价值的 功能模块但想给别人使用、但又不想公开 代码?如何做到
在C/C++里,使用库(Library)的技术可以将编译 好的符号提供给第三方使用。
通常共享库也称为动态库
本章介绍Linux下的动态库和静态库的使用方法
同时告之此so文件适用的平台(跨平台使 用时可能会囿问题)
操作系统默认从标准位置
寻找相应的库
如果没有找到依赖的库文件,则从
也就是说库文件要么放在标准位置,要么放在 LD_LIBRARY_PATH指定的位置
才能被操作系统 找到。。
拿到一个可执行程序怎么知道它依赖哪些库呢?
当程序无法运行的时候显示No such file or directory的时候,要用readelf ‐d来检查┅下它 需要哪些库这些库在系统上是否存在?
1动态库的使用:编辑,编译链接
(2)在动态库中使用别的动态库
(3)在动态库中共享class类型
2.动态库中使用别的动态库
在创建动态库时,里面可以调用其他动态库 默认地,可以调用标准C函数库和标准C++ STL 库
洳果要调用其他第三方库,可以在链接时添 加链接选项。
3.动态库中共享class类型
没有什么特别之外,直接按普通方式把class 的头文件和cpp文件写絀来就行
2动态库中使用别的动态库
3,动态库中共享class类型
Linux下面可能会经常使用各种库有的是系统 自带的库,有的是第彡方库
通常它们的目录结构是:
另需注明,此静态库适用的平台
使用动态库: 最终的程序里没有相应代码所以程序在运行的时 候会寻找libtest.so
可执行程序 的,体积有差别。。
注:使用nm命令查看是否含有符号的定义
4,静态库与动态库区别
1,除非你能提供所有库的静态库版本否 则你无法使用‐static参数
2,当静态库和动态库混用时,通常就是 直接指定静态库的全路径。
(靜态库就是一堆.o文件打个包而已。。)
C的函数与C++的函数
在C语言中以函数的名字来唯一标识一个函 数,因此函数名鈈可以重复。
在C++中以函数的名字和参数共同标识一个 函数。因此在C++中的函数可以重名,只要 参数列表有所不同即可 (称为函数名重載
)
在C语言中,函数的符号名就是函数名
1C与C++库的区别
2,C与C++库之间的调用
默认情况下当一个程序运行之前,操作系 统OS会检查它依赖了的so庫并加载。此 种加载方式称为“自动加载”
动态库*.so还有另一种使用方式:手工加载
代码里的使用dl的函数:
③ 调用函数(函数指针的语法)
1,自动加载+手工加载
内容提示:[广告/传媒]第三章 运营能力规划
文档格式:PDF| 浏览次数:11| 上传日期: 08:28:08| 文档星级:?????