Linux库相关概念
Linux库概念及相关编程
一、库的种类————静态库、动态库、共享库
1.静态库
静态函数库,是在程序执行前(编译)就加入到目标程序中去了 ;
优点:
1) 运行快
2)发布程序无需提供静态库,因为已经在app中,移植方便
缺点:大
图片来源
2.动态库
动态函数库,是在程序执行时动态(临时)由目标程序去调用
缺点: 运行慢
优点: 小
图片来源
3.共享库
二、库的制作
1.静态库的制作:
格式`xxxx.a·
a. gcc calcufuncs.c -c 生成xxx.o文件
b. ar rcs libcalcufunc.a calcufuncs.o xxx.o文件生成xxx.a静态库文件
2.动态库的制作:
gcc -shared -fpic calcufuncs.c -o libcalc.so
-shared 指定生成动态库
-fpic 标准,fPIC 选项作用于编译阶段,在生成目标文件时就得使用该选项
以生成位置无关的代码。
三、库的使用
静态库:
gcc calculatorT.c -lcalcufunc -L ./ -o mainProStatic
-lcalcufunc -l是制定要用的动态库,库名砍头去尾
-L告诉gcc编译器从-L制定的路径去找静态库。默认是从/usr/lib /usr/local/lib去找
gcc calculatorT.c -lcalc -L ./ -o mainProDy
libcalc.so
引用动态库,怎么指定动态库的位置
https://www.cnblogs.com/progamming/p/13043652.html
带动态库的程序,
可以指定该程序运行时候,在LD_LIBRARY_PATH 所指定的路径去找库文件
export LD_LIBRARY_PATH="/home/pi/back/test"
也可以将动态库拷到lib库中供查找
sudo cp libxxx.so /usr/lib/
通常使用流程为
vi xx.sh
export LD_LIBRARY_PATH="/home/pi/back/test"
./xxx.out
chmod +x xx.sh //给脚本文件添加可执行权限
./xx.sh
写给自己的废话
一、 与博客的爱恨情仇
1.接触CSDN
初入大学,由于是计算机专业 学生的缘故接触到了OJ(Online Judge),可以说是月黑风高夜,挠头脱发时。由于老师设置刷题数以及成绩有着挂钩的规定,于是大部分时间多在一片WA声中度过。看着室友刷题数目多的离谱,于是找室友求取经验,在和室友共享一份加量炸鸡之后,室友缓缓的说出“你用百度去搜这些题目,都能搜到的,不过我CSDN用的比较多”。怀着疑惑,打开百度搜索了一道斐波那契序列的题。搜之前"这是什么奇怪的数列,怎么有人搞这种东西折磨人",搜完之后“草,原来可以这样做”。于是开启了,编程全靠CSDN 之路。
2.下决心写博客的原因
大二下的时候疫情爆发了,大部分学习时光都是网课,于是开始老师上课讲一遍,教学平台的网课刷一遍,自己课后找个觉得不错的网课再看一遍,一门课刷三次网课,化身哪吒本吒。刷的时候想起老爸教育自己时说到的“书读三遍,其义自见”。不得不说,虽然累的像狗,学的也还行。不过没什么做笔记的习惯,很多课程在学的时候花了很大功夫,窥探到一点思路,事后没有笔记的支持,绩点也就不是很高。哪怕刷了三次网课,也没什么用。高数补考61分事实上假期刷了四次汤神的课。 大学期间学的东西很杂,Verilog、MATLAB、C、C++、Python、模电、DSP芯片的基础使用、51、32和Liunx等等。不过没有一门潜下心去好好学的。后悔。 学的浅显是一方面,在学习过程中没留下相关记录是另一个大问题。于是在拖延一个月之后正式决定开写!