gcc是linux标准的编译器
make则是对一堆程序集成编译
命令 gcc 可用于编译程序,-c 将.c文件编译为.o文件,-o链接.o生成可执行文件,-l 加入lib,-L指定lib路径,-I指定include路径,-Wall 输出提示
如下有test1.c和test2.c,在test1.c中调用了test2.c的函数
需先编译出各自的.o文件
然后再链接.o编译可执行文件
命令 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
为了避免每次都从硬盘中读取动态函数库的时间开销,可将函数库载入cache
命令 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 可列出程序含有的动态函数库,-v列出所有信息,-d 列出资料有遗失的link,-r列出ELF有关的错误
如上列出/usr/bin/passwd的函数库
命令 md5sum / sha1sum / sha256sum 都可打印出当前文件的MD5码,-b 使用二进制方式读取(默认为Windows/DOS方式),-c验证指纹,-t以文件形式读取
如上列出/etc/passwd的MD5码,当有黑客入侵修改该文件,下次打印的MD5码将会不一样