linux系统命令
man
参考链接:
- 《Linux c编程:一站式学习》
Man Page是 Linux
开发中最常用的参考手册,由很多页面组成,这些页面被组织成若干个部分,FHS(Filesystem
Hierarchy Standard)标准规定了各部分的含义,如下:
| section | 描述 |
|---|---|
| 1 | 用户命令,例如 ls |
| 2 | 系统调用,例如 _exit |
| 3 | 库函数,例如 printf |
| 4 | 特殊文件,例如 null,描述了设备文件 /dev/null 和 /dev/zero 的作用 |
| 5 | 系统配置文件的格式,例如 passwd 描述了系统配置文件 /etc/passwd 的格式 |
| 6 | 游戏 |
| 7 | 其他选项,例如 bash-builtins 描述了 bash 的各种内建命令 |
| 8 | 系统管理命令,例如 ifconfig |
有个问题就是,在使用man的时候,最好带着section编号,有些比较特殊,比如printf,直接使用man printf,看到的内容是第一个section的命令printf,要查看位于第三个
section 的 printf
函数应该输入man 3 printf,要查看哪些页面的主题包含 printf
关键字,可以输入man -k printf命令搜索。
这个东西我发现还是挺重要的,在写代码或者敲命令的时候,能擅用帮助手册,看的明白,能极大的提高工作效率。
ldd
命令介绍
参考链接:
- https://wangchujiang.com/linux-command/c/ldd.html
ldd命令用于打印程序或者库文件所依赖的共享库列表。
参数:
--version:打印版本号并退出 -v,--verbose:详细信息模式,打印出所有相关信息 -u,--unused:打印未使用的直接依赖 -d,--data-relocs:执行重定位和报告任何丢失的对象 -r,--function-relocs:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数
创建一个共享函数库
共享函数库和动态函数库是一个东西,在 Linux
上叫共享对象库(后缀.so),在 Windows
上叫动态加载函数库(后缀.dll)。
主程序test.c:
1 | |
头文件Add.h:
1 | |
共享库源文件Add.c:
1 | |
首先使用gcc -fPIC -shared -o test_add.so Add.c命令生成共享连接库。在将test.c编译时,使用gcc test.c -o test ./test_add.so告诉test,test_add()函数是动态链接库。现在就可以执行了。
1 | |