Linux基础——gcc和make

gcc和make是什么?

gcc是linux标准的编译器

make则是对一堆程序集成编译

gcc

命令 gcc 可用于编译程序,-c 将.c文件编译为.o文件,-o链接.o生成可执行文件,-l 加入lib,-L指定lib路径,-I指定include路径,-Wall 输出提示

编译单个程序

在这里插入图片描述

编译链接多个程序

如下有test1.c和test2.c,在test1.c中调用了test2.c的函数

在这里插入图片描述

需先编译出各自的.o文件

在这里插入图片描述

然后再链接.o编译可执行文件

在这里插入图片描述

make

命令 make 可简化多个程序的编写,使用时会自动加上 CFLAGS=“-Wall” 输出提示

编译

同样对于上面的test1.c和test2.c,编写makefile(红框为tab)

在这里插入图片描述

执行make或make test即可自动编译链接生成可执行文件

在这里插入图片描述

make会判断源码是否更新过,只编译需要更新的源码及自动进行相关性检查,这样可大大缩短时间

在这里插入图片描述

清除

在makefile中定义清除操作,用命令make clean执行

在这里插入图片描述

若要清除并重新编译则使用 make clean test

安装与卸载

只要将可执行程序放到 /usr/local/bin 下,即可通过文件名执行,卸载同理

在这里插入图片描述

函数库

函数库大多放在/lib64、/lib,而kernel的函数库放在/lib/modules

静态函数库

  • 通常文件名为 libxxx.a
  • 在编译的时候整合到执行程序中
  • 编译成功的可执行文件可独立运行,而不需要额外的函数库
  • 库升级后,程序要重新编译

动态函数库

  • 通常文件名为 libxxx.so
  • 在编译时不整合在执行程序中,程序需要时才读取
  • 编译出来的程序不能独立运行,必须带上库
  • 可单独升级库,而不用重新编译程序

函数库载入

为了避免每次都从硬盘中读取动态函数库的时间开销,可将函数库载入cache

  • 在/etc/ld.so.conf中写入函数库所在目录
  • 利用 ldconfig将/etc/ld.so.conf的资料读入cache
  • 同时资料会记录在/etc/ld.so.cache

ldconfig

命令 ldconfig 将资料载入cache,-f 指定资料配置文件(默认为/etc/ld.so.conf),-C 指定cache,-p列出目前函数库内容(/etc/ld.so.cache)

在这里插入图片描述

如上,在/etc/ld.so.conf.d创建配置文件将/usr/lib/python*的函数库导入cache

在这里插入图片描述

如上列出cache中的函数库,格式为名称 => 绝对路径

ldd

命令 ldd 可列出程序含有的动态函数库,-v列出所有信息,-d 列出资料有遗失的link,-r列出ELF有关的错误

在这里插入图片描述

如上列出/usr/bin/passwd的函数库

程序验证

命令 md5sum / sha1sum / sha256sum 都可打印出当前文件的MD5码,-b 使用二进制方式读取(默认为Windows/DOS方式),-c验证指纹,-t以文件形式读取

在这里插入图片描述

如上列出/etc/passwd的MD5码,当有黑客入侵修改该文件,下次打印的MD5码将会不一样

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值