库有两种: 静态库 .a[Linux]、.lib[windows] 动态库 .so[Linux]、.dll[windows] 2.静态库 静态库(.a):程序在编译链接的时候把库的代码链接到可执...在Linux下,我们之前也了解过如何通过gcc编译器来完成这⼀系列操作。 接下来我们深⼊探讨⼀下编译和链接的整个过程,来更好的理解动静态库的使⽤原理。 先来回顾下什么是编译呢?...⽐如我们查看下 hello 这个可执⾏程序依赖的动态库,会发现它就⽤到了⼀个c动态链接库: ldd main.exe linux-vdso.so.1 => (0x00007ffefd43f000...动态链接器: 动态链接器(如ld-linux.so)负责在程序运⾏时加载动态库。 当程序启动时,动态链接器会解析程序中的动态库依赖,并加载这些库到内存中。...这些路径会被动态链接器在加载动态库时搜索。 缓存⽂件: 为了提⾼动态库的加载效率,Linux系统会维护⼀个名为/etc/ld.so.cache的缓存⽂件。
:~/linux/动静态库的制作/new$ gcc -c *.c hyc@hyc-alicloud:~/linux/动静态库的制作/new$ ls mstr.c mstr.h mstr.o my.c...hyc@hyc-alicloud:~/linux/动静态库的制作/new$ ar -cr libmyc.a *o hyc@hyc-alicloud:~/linux/动静态库的制作/new$ ls libmyc.a...注:.h文件的意义就是作为方法手册 hyc@hyc-alicloud:~/linux/动静态库的制作$ ls lib new test.c hyc@hyc-alicloud:~/linux/动静态库的制作....c文件编译成.o hyc@hyc-alicloud:~/linux/动静态库的制作/new$ gcc -fPIC -c *.c hyc@hyc-alicloud:~/linux/动静态库的制作/new...选项:表示生成共享库格式 进行链接: hyc@hyc-alicloud:~/linux/动静态库的制作$ ls lib new test.c hyc@hyc-alicloud:~/linux/动静态库的制作
动静态库的制作 前置知识 要学会制作动态库,必须要有软硬链接知识的基础,大家可以移步至该文章:软链接和硬链接的详解 (Linux系统下)-CSDN博客 库的基本构造 问题 问题: 我们都知道代码有源文件...分为静态库和动态库,静态库以.a结尾,动态库以.so结尾 库的生成 静态库的生成 问题: 若我们有如下文件:myprint.c,mymath.c,myprint.h,mymath.h,请问我们要干什么呢...(还没有完哦) 库的使用 我们直接将刚刚制作的output文件夹给用户使用就好啦~~~ 自己制作的库的使用有三种办法 放进系统查找库函数的路径下(静态库) 导入环境变量(动态库) 放入...法三:放入配置文件 这种方法是推荐的,Linux中有一个专门让我们放置配置文件的,/etc/ld.so.conf.d/这个路径是保存自定义配置搜索库路径的解决方案 步骤 进入该目录下 cd...,保存退出 退出后,ldconfig 使得该配置文件生效 这样子我们就可以直接使用这个库啦 使用库的命令 gcc main.c -I 自己的库的头文件的路径 -L 自己的库的库文件路径
运行时不再依赖原库文件,但会导致可执行文件体积较大 。 文件格式:Linux下以.a结尾(如libmylib.a),Windows下为.lib 。...文件格式:Linux下以.so结尾(如libmylib.so ),Windows下为.dll 。 适用场景:库频繁更新、多进程共享(如服务器程序),或需节省资源的场景 。...与静态库不同,它们支持运行时加载,能有效减少内存占用。例如Linux系统的标准C库就是/lib/x86_64-linux-gnu/libc.so.6。...加载器按程序头表条目加载段,动态链接器解析依赖库(如.interp指定/lib64/ld-linux-x86-64.so.2)。...支持插件架构(如Nginx模块) 在Linux系统中,典型的动态链接过程是:当执行一个动态链接的可执行文件时,内核首先加载程序解释器(如/lib64/ld-linux-x86-64.so.2),然后由解释器负责加载所有依赖的共享库
一.静态库的制作 静态库的名称格式为:libxxx.a 注意 xxx 才是静态库的真正名字。....a *.o output: mkdir -p Lib/include mkdir -p Lib/mylib cp *.h Lib/include cp *.a Lib/mylib 二.动态库的制作...动态库的名称格式为:libxxx.so 注意 xxx 才是动态库的真正名字。...*.so output: mkdir -p Lib/include mkdir -p Lib/mylib cp *.h Lib/include cp *.so Lib/mylib 三.动静态库混合制作...这里提一个比较好玩的库 :ncurse 库,用这个库可以做出很多好玩的东西。 想了解的话,可以自行搜索。
大家好,继上节Linux库详解>,这节我们继续讲解如何在Linux系统上创建我们需要的库文件 在创建程序库之前,需要先来了解GCC的一些参数,因为静态库和共享库需要GCC工具产生,并且两者的GCC参数不同...目标文件需要创建成位置无关码,概念上就是在可执行程序装载它们的时候,它们可以放在可执行程序的内存里的任何地方 -shared 生成动态链接库 我们编写两个函数并将文件制作成库文件,用下面相同的代码分别制作静态库和共享库...Test.h" int add(int a, int b) { return (a+b); } int sub(int a, int b) { return (a - b); } 制作静态库...,表示静态函数库在本目录下查找 制作共享库 生成共享库 // 用下面两个命令 gcc -fPIC -o libTest.o -c Test.c gcc -shared -o libTest.so libTest.o...结束语 到目前为止,我们详细讲解了Linux下制作静态库、共享库、以及动态加载库,希望通过此文对你在Linux库的认识有所帮助,那么目的就达到了
静态库 .o文件的集合 制作 ar -cr libxxx.a xxx1.o xxx2.o xxx3.o ......Linux中静态库文件的后缀为"a"。 静态库的代码在编译时就已经链接到应用程序中 静态库中的各个成员(.o文件)没有特殊的存在格式,仅仅是一个.o文件的集合。...–lmylib -static指定编译器链接静态库,-L.指定静态库的路径为当前路径, 在gcc编译器中引用可搜索到的目录和库文件时需用(-l+库名), 如在gcc中加入-lm可以在程序汇中链接标准算术库...,加上-lpthread可以链接到linux标准线程库 总结: 使用静态库可以使程序不依赖于任何其他库而独立运行,但是会占用很多内存空间以及磁盘空间, 而且如果库文件更新,则需重新编译源代码...============================================ 动态库 并不包含在可执行文件中 在执行时才加载动态库 制作 gcc -shared -fPIC xxx.c
1.什么是库 库是写好的现有的,成熟的,可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库,不可能 每个⼈的代码都从零开始,因此库的存在意义⾮同寻常。...库有两种: 静态库 .a[Linux]、.lib[windows] 动态库 .so[Linux]、.dll[windows] 2.静态库 静态库(.a):程序在编译链接的时候把库的代码链接到可执⾏⽂件中...3.静态库·的使用------makefile自动化 初始状态,我们需要把.c编译成.o并和.h一块打包 makefile 如何写 3.动态库 动态库(.so):程序在运⾏的时候才去链接动态库的代码,多个程序共享使...⽤库的代码。...1.动态库的创建 和上文一样的打包 动态库的编译是使用gcc -shared,而不是静态库的 ar -rc 其余操作和静态库一致: 2.与静态库的不同 同样的操作,为什么动态库会报错呢?
库呢又分为静态库和动态库,在Linux中静态库文件后缀.a,动态库文件后缀.so;在Windows中静态库文件后缀.lib,动态库文件后缀.dll。...静态库的制作 这里提供两份源文件代码mystdio.c和mystring.c来制作库 //mystdio.c #include "mystdio.h" MYFILE* BuyFile(int fd, int...-rc表示replace和create) 静态库的使用 了解了静态库是如何制作的,那我们如何去使用静态库呢?...动态库的制作 我们知道了静态库是.o的归档文件,那动态库呢? 动态库又是如何生成的呢?...本篇文章的大致内容到这里就结束了,感谢各位大佬的支持 简单总结: 静态库制作:ar -rc将所有.o位置归档。
一、静态库制作 首先准备好需要做成库的源文件与头文件,如下示例: 注意:在制作库方法过程中不能有main函数。 如果代码是用c语言进行写的,执行以下语句把所有.c文件进行编译得到了.o文件。 ...它确保了库中的文件是最新的。 -c(create):这个选项用于创建一个新的库文件。如果指定的库文件已经存在,它并不会被覆盖,而是会报错提示文件已存在。...注意:在静态库命名时开头必须是lib,结尾必须是 .a 中间的才是它真正的名字,比如这里的myc。 这样动态库就制作完了,即libmyc.a。...二、动态库制作 源文件头文件不变,在生成静态库之后.o文件就没有用了我们把删除(rm *.o),以免干扰下面操作,重新生成.o文件并带-fPIC选项: gcc -c -fPIC *.c...gcc提供了制作动态库的选项:-shared,如下生成动态库: gcc -shared *.o -o libmyc.so 注意:在动态库命名时开头必须是lib,结尾必须是 .so 中间的才是它真正的名字
---- 一、静态库和动态库介绍 1、静态库 程序在编译链接的时候把库的代码链接到可执行文件中,程序运行的时候将不再需要静态库。...二、静态库的制作及使用 静态库的名字是以 lib 开头,以 .a 结尾,例:libmylib.a 静态库生成的指令: ar rcs libmylib.a file1.o 1、准备好源码 test.c #...\n"); return a - b; } sub.h int sub_fun(int, int); 2、编译源码生成 .o 文件 gcc -c sub.c -o sub.o 3、制作静态库...三、动态库的制作及使用 动态库的名字是以 lib 开头,以 .so 结尾,例:libmylib.so 1、生成位置无关的 .o 文件 gcc -c sub.c -o sub.o -fPIC 使用...-fPIC 这个参数过后,生成的函数就和位置无关,挂上 @plt 标识,等待动态绑定 2、制作动态库 gcc -shared -o libmymath.so sub.o 3、使用动态库 -l :指定库名
制作本地私有库 就是创建一个仓库, 存储在本地, 在本地的其他工程中直接使用 制作流程: 创建一个文件夹,把你需要拆分的代码放到文件夹中(例如:基类,分类,工具类等) 然后通过终端把你的这个文件夹进行git...{h,m}" s.requires_are = true 进行完上面的步骤,你简单的本地私有库就已经搭建好了 使用本地库 你现在可以进行主工程项目进行cocoapods管理 cd 进入你的主工程 pod...以上方法制作私有库的缺点 需要手动创建podspec文件(pod spec create xxx(你创建的文件夹的名字)) 没有使用git管理,手动使用git进行管理(git add...)...无法测试, 需要再次手动创建测试工程 制作本地私有库优化方案 使用pod lib 命令创建pod库模板工程 步骤 进入需要存放本地库的文件夹 pod lib create xxx (你创建的私有库的名字...制作之后效果文件目录 ? 编辑私有库入口 ?
操作之前准备好以下环境: VMWare Workstation SecureCRT CentOS-6.7-x86_64-minimal.iso //用来安装minimal版本的Linux虚拟机...CentOS-6.7-x86_64-bin-DVD1.iso //用来制作本地YUM源 YUM是什么?...YUM源可以简化我们在Linux上安装软件的过程,但是,我们的生产环境通常无法上网,不能连接外网的YUM源,所以,就无法使用yum命令安装软件。...1.使用CentOS-6.7-x86_64-minimal.iso在VMWare上安装好Linux虚拟机,主机名设置为mini1,通过实体机的网络与共享中心菜单查看虚拟路由VMnet8的配置: ?...eth0配置.png Linux虚拟机的IP设置为192.168.92.82 3.右击min1虚拟机-->虚拟机设置,将CentOS-6.7-x86_64-bin-DVD1.iso推入mini1的CD
mdadm --create --auto=yes /dev/md0 --level=10 --raid-devices=12 /dev/sda4 /dev/s...
description %pre %preun %postun %clean %files %defattr (-,root,root,0777) /usr /etc /var %post #运行制作
srcstorepass 666666 -deststorepass 666666 -storepass 666666 -destalias server -srcalias 1 #13.根证书导入信任正式库,
准备工具 1.微pe引导及其主要文件 链接:https://pan.baidu.com/s/1e-9zLoEkGLzMuNQ8pqQhpA 提取码:m0hl 2.linux分区软件 实例:gparted...nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=0,3&agrr=1&logo=80000000 看到网上有很多文章使用grub4dos和fdisk制作...他不支持uefi,并且步骤繁琐 提取微pe的引导文件 直接制作一个可启动分区,把微pe的文件放入就行了。...方法三安装到隐藏分区,在U盘根目录不会出现任何文件,若需要删除方法三安装的PE,只需用方法一二四五重新制作一次PE后手动格式化即可。 微PE工具箱生成ISO镜像后也不会产生过多的文件。
创建项目 在 github 上创建仓库,克隆到本地: git clone https://github.com/mxh-mo/MOOXXX.git 在项目目录下执行: pod lib create 库名称...Yes / No ] > No 2.配置项目 打开 .podspec 文件,对项目进行配置: Pod::Spec.new do |s| s.name = '库名...>' s.version = '库版本>' s.summary = '' s.description = <<-DESC 库 end 修改完成后进行验证: pod lib lint --allow-warnings # 验证本地库 pod spec lint --allow-warnings # 验证远端...push .podspec # 发布私有库 pod repo push .podspec
1.准备训练图片,并且制作tif格式 字库的训练图片格式最好是png的,注意图片数字周围的空白区域不能太窄,tesseract无法识别空白区域太窄的字符。...tessdata目录下D:\jTessBoxEditor\tesseract-ocr\tessdata 8.验证生成的语言包字库 输入命令:tesseract --list-langs 可以看到语言库中有自己刚添加的字库...num_1 我们用这个字库来识别一张图片 tesseract 72.png out -l num_1 会在图片目录下生成out.txt文件,我们打开这个txt文件,可以看到使用num_1字库识别这张图片的结果...打开out文件,发现识别结果与图片完全符合,至此,自己制作的字库就已经成功了,可以识别所有这种数字字体的图片。
,于是研究了一下制作开源库的方法,这里做一个学习笔记 必备条件 想到制作开源库的必备条件是要有一个GitHub的账号,常看过我文章的朋友应该也知道,我有不少Demo的下载地址也是直接放在了GitHub,...制作开源库 01 GitHub创建项目 我们在GitHub中创建一个androidtestlib的项目,因为我是先做了一遍,所以这里已经创建好了 ?...这样我们的开源库就已经发布完成了。 查看并使用开源库 ?...微卡智享 查看发布的开源库 当我们Release我们的开源库之后,就可以登录JitPack来查看开源库的情况,比如查看我的开源库情况,账号同我们的Github,可以自动登陆的 https://jitpack.io...开源库的使用 刚才图上有介绍开源库的使用 ?