0

正如您可能想象的那样,这是操作系统的作业,我被要求添加功能键Shift+F7以显示正在运行的进程数。

ps我在GitHub 上阅读了命令的源代码(MINIX 版本 3.2.1),并尝试在文件中实现一个可以完成任务的函数/usr/src/servers/is/dmp_kernel.c。但是,当我尝试运行时make,它会抱怨未定义的引用,例如

dmp_kernel.o: In function `running_proc_num':
dmp_kernel.c:(.text+0x1e): undefined reference to `chdir'
dmp_kernel.c:(.text+0x42): undefined reference to `fopen'
dmp_kernel.c:(.text+0x72): undefined reference to `fscanf'
dmp_kernel.c:(.text+0x8b): undefined reference to `fclose'
dmp_kernel.c:(.text+0xc4): undefined reference to `log10'
dmp_kernel.c:(.text+0xcc): undefined reference to `ceil'
dmp_kernel.c:(.text+0x119): undefined reference to `log10'
dmp_kernel.c:(.text+0x121): undefined reference to `ceil'
dmp_kernel.c:(.text+0x170): undefined reference to `fopen'
dmp_kernel.c:(.text+0x1bc): undefined reference to `fscanf'
dmp_kernel.c:(.text+0x1d3): undefined reference to `fclose'
dmp_kernel.c:(.text+0x210): undefined reference to `wait'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我已经包含了像stdio.hmath.hunistd.hsys/wait.h. 在回答一个 Stack Overflow 问题时,我了解到这个问题的原因是链接器没有链接 MINIX 下的完整 C 库。但是,我通常使用CMake并且真的不知道如何解决此类问题。我什至不知道如何使用make.

我真的很期待你的帮助!


看起来Makefile


.include <bsd.own.mk>

PROG=   is
SRCS=   main.c dmp.c dmp_kernel.c dmp_pm.c dmp_fs.c dmp_rs.c dmp_ds.c dmp_vm.c

DPADD+= ${LIBSYS}
LDADD+= -lsys

MAN=

BINDIR?= /sbin

CPPFLAGS.dmp_kernel.c+= -I${NETBSDSRCDIR}
CPPFLAGS.dmp_rs.c+=     -I${NETBSDSRCDIR}
CPPFLAGS.dmp_vm.c+=     -I${NETBSDSRCDIR}

# This setting must match the kernel's, as it affects the IRQ hooks table size.
.if ${USE_APIC} != "no"
CFLAGS+= -DUSE_APIC
.endif

.include <minix.service.mk>
4

0 回答 0