我发现tsntool是在LSDK20.04上更新的,而我本地的tsntool是基于LSDK19.09的,为了配合这次更新,我把相关的补丁应用到本地的tsntool上。
但是当我使用 make tools 构建 tsntool 的工具时,构建失败并显示以下内容:
ztang@ztang-Op
tiPlex-5070:~/work/bsp/flexbuild_lsdk2004/packages/apps/networking/tsntool$ make tools
在 pkg-config 搜索路径中找不到包 libnl-3.0。
也许您应该将包含“libnl-3.0.pc”的目录添加
到 PKG_CONFIG_PATH 环境变量中
No package 'libnl-3.0' found
在 pkg-config 搜索路径中找不到包 libnl-genl-3.0。
也许您应该将包含“libnl-genl-3.0.pc”的目录添加
到 PKG_CONFIG_PATH 环境变量中
No package 'libnl-genl-3.0' found
在 pkg-config 搜索路径中找不到包 libcjson。
也许你应该将包含 libcjson.pc 的目录添加
到 PKG_CONFIG_PATH 环境变量
找不到包 'libcjson'
cc -c tools/event.c -o tools/event.o -Wall -Wextra -Wno-error=unused-parameter -Wno-error=sign-compare -Wno-format-security -g - fstack-protector-all -Imain -Iinclude
In file included from tools/event.c:33:0:
include/tsn/genl_tsn.h:9:10: fatal error: netlink/netlink.h: 没有那个文件或目录
# include
^~~~~~~~~~~~~~~~~~~
编译终止。
Makefile:62: 目标 'tools/event.o' 的配方失败
make: *** [tools/event.o] 错误 1
这可能是因为依赖路径不对。所以我通过恢复补丁让这些工具默认构建:
commit 10a0aeee94dfa71dbb82fcec425de8d3a8f38940 工具:make alone
我用命令 flex-builder -c tsntool 重建了 tsntools,它也失败了,出现以下错误:
flex-builder -c tsntool 工具
...
...
aarch64-linux-gnu-gcc --sysroot=/home/ztang/work/bsp/flexbuild_lsdk2004/build/rfs/rootfs_lsdk2004_ubuntu_main_arm64 tools/event.o -o tools/event -ltsn -L/home/ztang/work/bsp/ flexbuild_lsdk2004/build/rfs/rootfs_lsdk2004_ubuntu_main_arm64/usr/local/lib -L/home/ztang/work/bsp/flexbuild_lsdk2004/build/rfs/rootfs_lsdk2004_ubuntu_main_arm64/usr/lib/aarch64-linux-gnu -lnl-lngenl-3 - 3 -lcjson -lpthread -lm -lrt -lreadline -ltermcap -L。-Wl,-rpath,/home/ztang/work/bsp/flexbuild_lsdk2004/packages/apps/networking/tsntool
aarch64-linux-gnu-gcc --sysroot=/home/ztang/work/bsp/flexbuild_lsdk2004/build/rfs/rootfs_lsdk2004_ubuntu_main_arm64 -c tools/timestamping.c -o tools/timestamping.o -Wall -Wextra -Wno-error=未使用的参数 -Wno-error=sign-compare -Wno-format-security -g -fstack-protector-all -Imain -I/home/ztang/work/bsp/flexbuild_lsdk2004/build/rfs/rootfs_lsdk2004_ubuntu_main_arm64/usr/local/ include -I/home/ztang/work/bsp/flexbuild_lsdk2004/build/rfs/rootfs_lsdk2004_ubuntu_main_arm64/usr/include/libnl3 -Iinclude
tools/timestamping.c: In function 'setsockopt_txtime':
tools/timestamping.c:404:9: 错误: 变量 'so_txtime_val' 有初始值设定项但类型不完整
struct sock_txtime so_txtime_val = {
^~~~~~~~~~~
tools/timestamping.c:405:5: error: 'struct sock_txtime' 没有名为 'clockid' 的成员
.clockid = CLOCK_TAI,
^~~~~~~
tools/timestamping.c:405:16: warning: struct initializer
.clockid = CLOCK_TAI,
^~~~~~~~~
tools/timestamping.c:405:16: 注意:('so_txtime_val' 接近初始化)
tools/timestamping.c:407:5: error: 'struct sock_txtime' 没有名为 'flags' 的成员
。flags = SOF_TXTIME_REPORT_ERRORS
^~~~~
tools/timestamping.c:407:13: error: 'SOF_TXTIME_REPORT_ERRORS' undeclared (first use in this function)
.flags = SOF_TXTIME_REPORT_ERRORS
^~~~~ ~~~~~~~~~~~~~~~~~~~
tools/timestamping.c:407:13: 注意:每个未声明的标识符只针对它出现在 tools/timestamping.c:407:13 中的每个函数报告一次
:警告:结构初始化工具中的多余元素
tools/timestamping.c:407: 13:注意:('so_txtime_val' 接近初始化)
tools/timestamping.c:404:21:错误:'so_txtime_val' 的存储大小未知
struct sock_txtime so_txtime_val = {
^~~~~~~~~~~ ~~
tools/timestamping.c:409:9: 错误:变量 'so_txtime_val_read' 有初始值设定项但类型不完整
struct sock_txtime so_txtime_val_read = { 0 };
^~~~~~~~~~~
tools/timestamping.c:409:44:警告:结构初始值设定项中的元素过多
struct sock_txtime so_txtime_val_read = { 0 };
^
tools/timestamping.c:409:44: 注意:('so_txtime_val_read' 接近初始化)
tools/timestamping.c:409:21:错误:'so_txtime_val_read' 的存储大小未知
struct sock_txtime so_txtime_val_read = { 0 };
^~~~~~~~~~~~~~~~~~
tools/timestamping.c:413:26: error: 'SOF_TXTIME_DEADLINE_MODE' undeclared(首次在此函数中使用);您是说“SOF_TXTIME_REPORT_ERRORS”吗?
so_txtime_val.flags |= SOF_TXTIME_DEADLINE_MODE;
^~~~~~~~~~~~~~~~~~~~~~~~
SOF_TXTIME_REPORT_ERRORS
tools/timestamping.c:409:21: warning: unused variable 'so_txtime_val_read' [-Wunused-variable]
struct sock_txtime so_txtime_val_read = { 0 };
^~~~~~~~~~~~~~~~~~
tools/timestamping.c:404:21: 警告:未使用的变量 'so_txtime_val' [-Wunused-variable]
struct sock_txtime so_txtime_val = {
^~~~~~~~~~~~~
Makefile:63: 目标工具的配方/timestamping.o' failed
make[2]: *** [tools/timestamping.o] Error 1
make[2]: 离开目录“/home/ztang/work/bsp/flexbuild_lsdk2004/packages/apps/networking/tsntool”
/home/ztang/work/bsp/flexbuild_lsdk2004/packages/apps/networking/networking.mk:33: 目标 'tsntool' 的配方失败
make[1]: *** [tsntool] Error 2
make[1]: 离开目录“/home/ztang/work/bsp/flexbuild_lsdk2004/packages/apps”
Makefile:25: 目标 'tsntool' 的配方失败
make: *** [tsntool] Error 2
make: 离开目录“/home/ztang/work/bsp /flexbuild_lsdk2004”
这似乎默认无法构建 tsntool 的工具。如果我想使用这些工具,如事件和时间戳,我该怎么办?关于 tsntool compilling 工具是否有任何已知问题?或者在我的构建步骤中配置错误?