①概念:静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库。
②特点:
静态库链接之后,静态库改变,对程序不再产生影响,移植方便
浪费空间与资源
①概念:动态库链接时不复制,程序运行时由系统动态加载到内存,供程序调用。而且系统只加载一次,可以被多个程序共用。
②特点:
动态函数库在编译的时候并没有被编译进目标代码中,需要用到相应的功能,代码才会被调用到程序中,节约内存
动态库的改变,程序也会跟着动态变化,升级更新比较方便
helloworld.h
#ifndef __HEPPLWPRLD_H__
#define __HEPPLWPRLD_H__void hello();#endif
helloworld.cpp
#include
#include "helloworld.h"
void hello(){std::cout<<"helloworld"<
#include"helloworld.h"
int main(){
hello();
}
g++ -Wall -g -fPIC -c helloworld.cpp -o helloworld.o
g++ -shared helloworld.o -o libhelloworld.so
g++ -Wall -o main.o -c main.cpp
g++ -o main main.o -L/root/git/gitsinet/shared/ -lhelloworld
值得注意的是要执行export 添加环境变量,不然操作系统会找不到链接库(自行踩坑,久病成医)
ldd 查看程序依赖的链接库
/etc/ld.so.conf 是linux 查找so库位置的环境变量配置文件,修改后ldconfig刷新配置
上一篇: “酒囊饭袋”的意思
下一篇:vue3后台管理系统