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

命令介绍

参考链接:

ldd命令用于打印程序或者库文件所依赖的共享库列表。

参数:

–version:打印版本号并退出 -v,–verbose:详细信息模式,打印出所有相关信息 -u,–unused:打印未使用的直接依赖 -d,–data-relocs:执行重定位和报告任何丢失的对象 -r,–function-relocs:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数

创建一个共享函数库

共享函数库和动态函数库是一个东西,在 Linux 上叫共享对象库(后缀.so),在 Windows 上叫动态加载函数库(后缀.dll)。

主程序test.c

1
2
3
4
5
6
7
#include "Add.h"

int main(int argc, char const *argv[])
{
test_add(1, 2);
return 0;
}

头文件Add.h

1
2
3
4
#ifndef ADD_H
#define ADD_H
int test_add(int i, int j);
#endif

共享库源文件Add.c

1
2
3
4
5
#include <stdio.h>
void test_add(int i, int j)
{
printf("%d\n", i + j);
}

首先使用gcc -fPIC -shared -o test_add.so Add.c命令生成共享连接库。在将test.c编译时,使用gcc test.c -o test ./test_add.so告诉testtest_add()函数是动态链接库。现在就可以执行了。

1
2
3
4
5
6
7
giantbranch@ubuntu:~/Desktop/c/lib$ ./test
3
giantbranch@ubuntu:~/Desktop/c/lib$ ldd ./test
linux-vdso.so.1 => (0x00007ffff7ffa000)
./test_add.so (0x00007ffff7bd5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ffff780b000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffff7dd7000)

linux系统命令
https://ahtoh.cn/2022/10/08/linux系统命令/
作者
ahtoh
发布于
2022-10-08 20:37
许可协议