02 2024 档案
静态库和动态库的区别
摘要:静态库是在编译阶段和可执行文件打包链接在一起的,它可以看成是中间文件的简单集合,保留了符号,只有在静态链接的过程中,才会真正地做地址分配和重定位。 而动态库在编译阶段,它的代码并不会被合并进可执行文件中,在运行时才会被加载进内存,它被加载进内存的地址是不固定的,所以每次加载完成之后,才能为它的符号分
阅读全文
LD_LIBRARY_PATH和LIBRARY_PATH的区别
摘要:LD_LIBRARY_PATH 和 LIBRARY_PATH 在 Linux 系统中都是与动态链接库查找路径相关的环境变量,它们的主要区别在于使用阶段和作用: LIBRARY_PATH: 作用于程序编译阶段,告诉编译器(如 gcc)在编译时寻找动态链接库(.so 文件)的附加搜索路径。 当编译一个程
阅读全文
Linux下指定so动态库的加载路径的5种方法
摘要:搜索的先后顺序是: 编译目标代码时指定的动态库搜索路径; 环境变量LD_LIBRARY_PATH指定的动态库搜索路径; 配置文件/etc/ld.so.conf中指定的动态库搜索路径; 默认的动态库搜索路径/lib; 默认的动态库搜索路径/usr/lib。 将库文件放置在对应的路径中,运行时就可以搜索
阅读全文
静态链接
摘要:编程代码无非是由函数和各种变量以及对这些变量的读、写所组成,而不管是变量还是函数,它们最终都要存储在内存里。为每个变量和函数正确地分配内存空间,记录它们的地址,并把这个地址复写回调用或引用它们的地方,这是一个十分重要且困难的任务。 我们在使用gcc时,往往执行一个命令后,就能得到可执行程序,所以你可
阅读全文
实模式和保护模式的区别
摘要:实模式和保护模式是指计算机在不同工作模式下的运行状态和功能。 实模式(Real Mode): 实模式是早期的x86计算机运行的基本模式,它提供了最初的兼容性,与早期的8086和80286处理器兼容。 运行在实模式下的计算机仅能访问1MB的物理内存,并且没有内存保护机制。 实模式使用物理地址寻址方式,
阅读全文