我正在尝试使用OpenEmbedded构建DTN。不幸的是,DTN 使用 Tcl 8.3 或 8.4 以及 DB 4.2、4.3、4.4 或 4.5,但 bitbake 使用的是 Tcl 8.5 和 DB 5.0。
在 OpenEmbedded recipes 目录中,除了其他文件之外,还存在:
db/
db/db_4.3.29.bb
db/db4-native.inc
db/db3-native_3.2.9.bb
db/db_5.0.21.bb
db/db3-3.2.9
db/db4.inc
db/files
db/db -native_4.3.29.bb
db/db3_3.2.9.bb
db/db-native_5.0.21.bb
db/db5.inc
tcltk/
tcltk/tk
tcltk/tk_8.4.19.bb
tcltk/tcl-native_8.4.19.bb
tcltk/ tk-8.5.8
tcltk/tk-native_8.4.19.bb
tcltk/tk_8.5.8.bb
tcltk/文件
tcltk/tcl
tcltk/tcl-8.5.8
tcltk/tcl_8.5.8.bb
tcltk/tcl_8.4.19.bb `
在 bitbake 配置 dtn 时,会发生以下情况:
| 检查包含 pow 的库... -lm
| 检查包含 dlopen 的库... -ldl
| | 配置:检查 tcl 安装(版本 8.4)
| 在 /opt/OpenEmbedded/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi usr/include 中检查 tcl.h(版本 8.4)... 否
|
| 配置:检查 tcl 安装(版本 8.3)
| 在 /opt/OpenEmbedded/build/tmp/sysroots/armv7a-angstrom-linux-gnueabi/usr/include 中检查 tcl.h(版本 8.3)
... 配置:错误:找不到可用的 tcl.h
注意:任务失败:/opt/OpenEmbedded/build/tmp/work/armv7a-angstrom-linux-gnueabi/dtn-2.5.0-r5/temp/log.do_configure。 27117
错误:TaskFailed 事件异常,正在中止
错误:/opt/OpenEmbedded/openembedded/recipes/dtnrg/dtn_2.5.0.bb do_configure 的构建失败
错误:任务 11(/opt/OpenEmbedded/openembedded/recipes/dtnrg/dtn_2.5.0.bb,do_configure)失败
注意:任务总结:尝试了897个任务,其中883个不需要重新运行,1个失败。
错误:'/opt/OpenEmbedded/openembedded/recipes/dtnrg/dtn_2.5.0.bb' 失败`
为了解决这个问题,我去了 dtn_2.5.0.bb 并添加了 --with-tclver=8.5。
DB也发生了同样的事情,为了再次解决它,我做了同样的事情。
过了一会儿,当 bitbake 编译时,发生了以下情况:
| 在 storage/BerkeleyDBStore.cc:35 包含的文件中:
| storage/BerkeleyDBStore.h:31:2: error: #error "must use Berkeley DB major version 4" | 在 /opt/OpenEmbedded/build/tmp/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.3.3/../../../.. /arm-angstrom-linux-gnueabi/include/c++/4.3.3/ext/hash_set:64
,
| 来自存储/../util/StringUtils.h:39,
| 来自存储/DurableStore.h:35,
| 来自存储/BerkeleyDBStore.h:39,
| 来自存储/BerkeleyDBStore.cc:35:
| /opt/OpenEmbedded/build/tmp/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.3.3/../../../../arm-angstrom -linux-gnueabi/include/c++/4.3.3/backward/backward_warning.h:33:2: 警告:警告 此文件包含至少一个已弃用或过时的标头,将来可能会在不另行通知的情况下将其删除。
请改用具有等效功能的非弃用接口。有关替换标头和接口的列表,请参阅文件 backward_warning.h。要禁用此警告,请使用 -Wno-deprecated。
| storage/BerkeleyDBStore.cc:在成员函数“virtual int oasys::BerkeleyDBStore::init(const oasys::StorageConfig&)”中:
| storage/BerkeleyDBStore.cc:129:警告:从 'void ( )(const char)的无效转换, char*)' 到 'void ( )(const DB_ENV , const char*, const char*)'
| storage/BerkeleyDBStore.cc:187:错误:未在此范围内声明“DB_LOG_AUTOREMOVE”| make 1 : *** [storage/BerkeleyDBStore.o] 错误 1
| make 1 : 离开目录``/opt/OpenEmbedded/build/tmp/work/armv7a-angstrom-linux-gnueabi/dtn-2.5.0-r5/dtn-2.5.0/oasys'
| 制作:* [oasys] 错误 2
| 致命:oe_runmake 失败
注意:任务失败:/opt/OpenEmbedded/build/tmp/work/armv7a-angstrom-linux-gnueabi/dtn-2.5.0-r5/temp/log.do_compile.5339
错误:TaskFailed 事件异常,正在中止
错误:/opt/OpenEmbedded/openembedded/recipes/dtnrg/dtn_2.5.0.bb do_compile 的构建失败
错误:任务 13 (/opt/OpenEmbedded/openembedded/recipes/dtnrg/dtn_2.5.0.bb, do_compile) 失败
注意:任务摘要:尝试了 913 个任务,其中 913 个不需要重新运行,1 个失败。
错误:'/opt/OpenEmbedded/openembedded/recipes/dtnrg/dtn_2.5.0.bb' 失败`
那么,有没有办法“告诉”bitbake 或 OpenEmbedded 使用我选择的版本?