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

时间:2016-06-21 23:11:13

标签: operating-system system

如果我理解正确,程序依赖于系统调用来执行创建文件,创建新进程以及类似内容等任务。

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

系统调用是否已停止?

1 个答案:

答案 0 :(得分:0)

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

gcc -c -nostdlib main.c -o main.o

这将创建没有OS(目标)特定库且没有链接(-c标志)的目标文件 之后再看一下输出ELF的符号。

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

您将看到未解析的符号。