我正在 QEMU 上使用 VxWorks SDK。我正在编写一个简单的 C++ 程序来启用循环调度并对调度程序进行一些实验。为了启用循环,我调用 kernelLib.h 的 kernelTimeSlice(10) 但在编译时出现致命错误:
fatal error: 'kernelLib.h' file not found
#include <kernelLib.h>
^~~~~~~~~~~~~
1 error generated.
找到了其他库,例如taskLib.h。 有谁知道为什么?快速查看其他标头(如 taskLib.h)的路径会看到路径 vxsdk/sysroot/krnl/h/public 和 vxsdk/sysroot/usr/h/public,但搜索 kernelLib 会导致 vxsdk/sysroot/krnl/h /公共。
我尝试了“困难的方法”,包括 kernelLib.h 的完整路径:
#include "wrsdk-vxworks7-qemu/vxsdk/sysroot/krnl/h/public/kernelLib.h"
但编译时我得到:
$ wr-c++ hello_vxworks.cpp -static -o hello_vxworks
/home/vboxuser/Desktop/wrsdk-vxworks7-qemu/vxsdk/host/x86_64-linux/bin/../../../../compilers/llvm-16.0.0.1/LINUX64/bin/ldpentium: /tmp/wrccMGMTOE.o: in function `main':
hello_vxworks.cpp:(.text+0x2c3): undefined reference to `kernelTimeSlice'
我很确定动机与 kernelLib.h 位于
krnl
文件夹中这一事实有关,但我没有更多线索。
我也遇到过同样的错误。我还检查了 /vxsdk/sysroot/krnl/h/public 文件夹中的头文件“kernelLib.h”。将头文件从 krnl 文件夹复制到 usr 文件夹(即 /vxsdk/sysroot/usr/h/public 文件夹)后,我的错误已被删除。尝试一下,它可能会解决你的问题。