Linux命令学习
1. 查看动态库
1.1. readlink
选项 | 作用 | 实例 |
---|
-f | 简单地说,就是一直跟随符号链接,直到直到非符号链接的文件位置,限制是最后必须存在一个非符号链接的文件 | ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1434c0c6e03e6ce2ce5e7aec09f91dd5.png) |
-e | 递归跟随给出文件名的所有符号链接以标准化,所有组件都必须存在 | |
-m | 递归跟随给出文件名的所有符号链接以标准化,但不对组件存在性作出要求 | |
1.2. readelf
选项 | 作用 | 实例 |
---|
-h | 显示文件的ELF Header的文件头信息 | ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/562ddf9787df90fd61e0547595ff0fa1.png) |
-l | 显示文件的Program Header Table中的每个Prgram Header Entry的信息(如果有) | ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/92ef104660172c57da707f249e585b6d.png) |
-S | 显示文件的Section Header Table中的每个Section Header Entry的信息(如果有) | ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4b0d3a22dad573086afa194ece7b4d09.png) |
-d | 显示文件中的Dynamic Section的信息(如果有) | ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f5e846ec6687c521ad5eb03a4a7227ea.png) |
| | |
1.3. ldd
- 简介
列出一个程序所需的所有动态库,默认情况下,/etc/ld.so.conf 文件中包含有默认的共享库搜索路径。 - 用法
选项 | 作用 |
---|
-d | 执行符号重部署,并报告缺少的目标对象 |
-r | 对目标对象和函数执行重新部署,并报告缺少的目标对象和函数 |
-u | 打印不需要链接的库 |
-v | 打印所有信息 |
1.4. nm
- 简介
nm命令主要是用来列出某些文件中的符号,说白了就是一些函数和全局变量等 - 用法
选项 | 作用 | 实例 |
---|
无 | 查看导出函数 | ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0008914f697d22156cc81020129e88c5.png) |
1.5. ln
- 简介
为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。 - 语法
ln [参数][源文件或目录][目标文件或目录] - 用法
参数 | 作用 | 实例 |
---|
-b | 删除,覆盖以前建立的链接 | |
-d | 允许超级用户制作目录的硬链接 | |
-f | 强制执行 | |
-i | 交互模式,文件存在则提示用户是否覆盖 | |
-n | 把符号链接视为一般目录 | |
-s | 软链接(符号链接) | ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/02a358ae9d92915944c74f60aa287465.png) |
-v | 显示详细的处理过程 | |
1.6. objdump
选项 | 作用 | 实例 |
---|
-S | 查看汇编源代码信息 | ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/141646e456a4a815a34ead0de0ca0780.png) |
-x | 以某种分类信息的形式把目标文件的数据组成输出;<可查到该文件的的所有动态库> | |
2. 查看进程
2.1. lsof
- 简介
列出当前进程打开的文件 - 语法
lsof (选项) (参数)
lsof (参数) - 用法
选项 | 作用 |
---|
不加参数 | 就会打开所有被打开的文件 |
直接跟文件名 | 查看谁正在使用某个文件 |
+D 路径 | 递归查看某个目录的文件信息 |
-u username | 列出某个用户打开的文件信息 |
-c mysql | 列出某个用户打开的文件信息 |
-c mysql -c apache | 列出多个程序多打开的文件信息 |
-u test -c mysql | 列出某个用户以及某个程序所打开的文件信息 |
lsof -u ^root | 列出除了某个用户外的被打开的文件信息 |
-p pid | 通过某个进程号显示该进行打开的文件 |
-p pid,pid,pid | 列出多个进程号对应的文件信息 |
-i | 列出所有的网络连接 |
-i tcp | 列出所有tcp 网络连接信息 |
-i :3306 | 列出谁在使用某个端口 |
-i tcp:80 | 特定的tcp端口 |
2.2. pidof
- 简介
根据进程名称获取进程pid - 语法
pidof(选项)(参数) - 选项
- -s:仅返回一个进程号;
- -c:仅显示具有相同“root”目录的进程;
- -x:显示由脚本开启的进程;
- -o:指定不显示的进程ID。
- 效果
![pidof](https://i-blog.csdnimg.cn/blog_migrate/94366436bd1387c6d7f7053af188cc93.png#pic_center)
3. 安装软件
3.1. 安装程序源码
sudo apt-get source fcitx-frontend-qt4
3.2. 安装程序所有依赖源码
sudo apt-get build-dep fcitx-frontend-qt4
4. 文件查找
5. makefile
1. make时显示程序要链接的库文件
make VERBOSE=1
2.
3.
make时显示链接的库文件
git diff >> sss.patch
git apply sss.patch
xargs
参考
lsof 命令参考博客