我正在开发一个项目,其中底层内核来自 QNX,所有内核源都以二进制形式提供,例如块驱动程序的 CAM 层以 libcam.a 的形式存在,但找不到应该完整存在的确切内核二进制文件项目的源代码树。
谁能告诉我有什么方法可以找到它??
我正在开发一个项目,其中底层内核来自 QNX,所有内核源都以二进制形式提供,例如块驱动程序的 CAM 层以 libcam.a 的形式存在,但找不到应该完整存在的确切内核二进制文件项目的源代码树。
谁能告诉我有什么方法可以找到它??
正在运行的内核将是 PID 为 1 的进程。使用ps -e
来查看它。
在我的情况下,它是procnto
. 如果您正在运行检测内核(用于调试),则它是procnto-instr
.
ps -e
PID TTY TIME CMD
1 ? 12:25:42 procnto
4098 ? 00:00:00 pci-bios
4099 ? 03:40:47 io-usb
4100 ? 00:00:00 io-hid
4101 ? 00:00:00 devc-con-hid
4102 ? 00:58:14 devb-eide
20487 ? 00:00:00 /sbin/tinit
20488 ? 00:00:00 slogger
24585 ? 00:00:25 pipe
28682 ? 00:10:22 mqueue
根据您制作 IFS 文件的方式,您可以拥有一个 .build 文件,其中包含以下内容:
#
# The build file for QNX Neutrino booting on a PC
#
[linker="ntox86-ld -T$QNX_TARGET/x86/lib/nto.link %(h!=0, -Ttext 0x%t%)%(d!=0, -Tdata 0x%d%) -o%o %i %[M -L%^i -uinit_%n -lmod_%n%]"]
[virtual=x86,bios +compress] boot = {
startup-bios
# PATH is the *safe* path for executables (confstr(_CS_PATH...))
# LD_LIBRARY_PATH is the *safe* path for libraries (confstr(_CS_LIBPATH))
# i.e. This is the path searched for libs in setuid/setgid executables.
PATH=/proc/boot:/bin:/usr/bin:/opt/bin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll:/opt/lib procnto
} ...
最后procnto
一点是告诉引导加载程序使用哪个内核。查看mkifs以获取更多信息。