Linux

Linux

预先编译好的方法的集合
静态库	libxx.a
ar crv libfoo.a add.o max.o
gcc -o main main.c -L路径 -l库名
会把方法包含到可执行程序中 删掉库没问题
使用静态库的可执行程序,会包含用到库的方法,目标主机上即使没有该库,程序也能运行


共享库 libxx.so
gcc -shared -fPIC -o libfoo.so add.o max.o
cp libxx.so /usr/lib 管理员 运行
共享库 删掉之后 程序不能用了
使用共享库的可执行程序,不会包含用到的方法,仅仅标记,目标主机没有该库,程序无法运行。

LD_LIBARY_PATH .(点 当前目录)
export LD_LIBARY_PATH

在当前找 换一个终端后失效(bash中定义)

同上
etc id.lib.conf该库路径

错误

汇编时候 链接错误 找不到方法的实现
编译时错误 语法错误

ldd

可执行文件用到了什么库

运行时不占磁盘空间占内存空间
程序计数器 自加 程序由指令构成

系统/控制/数据/地址总线
操作系统 管理计算机的软硬件设备 为用户提供一个交互的接口 管理内存 文件系统 进程

进程 一个正在进行的程序 就绪 阻塞 运行
PCB 进程控制块
串行处理 一个一个 处理任务
批处理 一次提交多个任务 按顺序执行 (减少任务之间的耽误的时间)
多道程序设计 避免阻塞带来的时延
分时系统 同时执行多个任务(时间片轮转 )
实时系统
引入虚拟内存可以运行比物理内存大的程序
磁盘 -内存- 缓存- 寄存器 cpu

printf-》libc.so.6
缓冲区 charbuff
缓冲区刷新到屏幕 不满足则不刷新 屏幕
1.缓冲区满了
2.强制刷新\n
3.fflush(std::out)
4.程序结束

exit 冲刷缓冲区后调用 _exit退出程序(_exit不刷新缓冲区)

int main(int argc,char +argv[],char * envp[])
参数个数
参数内容
环境变量

动态库更改~环境变量 然后envp【】就可以找到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值