Operating system 如果程序依赖于系统调用来执行重要任务,那么它们如何在不同的操作系统上运行?

Operating system 如果程序依赖于系统调用来执行重要任务,那么它们如何在不同的操作系统上运行?,operating-system,system,Operating System,System,如果我理解正确,程序依赖于系统调用来执行创建文件、创建新流程等任务 程序如何在不同的操作系统上运行 系统调用是否标准化?这是一个链接过程,实际上是在编译后解决缺少的符号。当你为其他平台交叉编译某些东西或编译任何软件时。您必须提供该符号表。 该符号表由许多库组件和系统调用表组成。因此,它们对于每个操作系统都是特定的(并且不同)。系统调用由库函数间接调用。 尝试用这个命令编译任何C程序(它应该调用某种类型的系统调用,比如调用malloc函数) 这将创建没有操作系统(目标)特定库且没有链接(-c标志)

如果我理解正确,程序依赖于系统调用来执行创建文件、创建新流程等任务

程序如何在不同的操作系统上运行


系统调用是否标准化?

这是一个链接过程,实际上是在编译后解决缺少的符号。当你为其他平台交叉编译某些东西或编译任何软件时。您必须提供该符号表。
该符号表由许多库组件和系统调用表组成。因此,它们对于每个操作系统都是特定的(并且不同)。系统调用由库函数间接调用。
尝试用这个命令编译任何C程序(它应该调用某种类型的系统调用,比如调用malloc函数)

这将创建没有操作系统(目标)特定库且没有链接(-c标志)的对象文件。
然后看输出ELF的符号

readelf --symbols main.o | grep "UND"
您将看到未解析的符号

readelf --symbols main.o | grep "UND"