【问题标题】:RedHawk Build Failure on Ubuntu 16.04Ubuntu 16.04 上的 RedHawk 构建失败
【发布时间】:2016-12-16 18:22:30
【问题描述】:

我正在尝试在 Ubuntu 16.04 上构建 RedHawkSdr CF。看起来这应该是一个相对简单的操作,但我不知道从哪里开始看这个问题。我相信我遵循了所有针对依赖项和环境变量的 Ubuntu 特定说明。

我收到此错误:

make[2]: Entering directory '/home/brasssm1/workspace/draco/redhawk-src-2.0.3/redhawk/src/control/parser'
xsdcxx cxx-parser --root-element deviceconfiguration --type-map internal/dcd.map --hxx-suffix .h --cxx-suffix .cpp --xml-parser expat --output-dir internal --generate-validation ../../xml/xsd/dcd.xsd; sed -i 's/ns == "urn:mil:jpeojtrs:sca:dcd"/ns.empty()/g' internal/dcd-pskel.cpp; sed -i 's/"urn:mil:jpeojtrs:sca:dcd"/""/g' internal/dcd-pskel.cpp 
xsdcxx cxx-parser --root-element domainmanagerconfiguration --type-map internal/dmd.map --hxx-suffix .h --cxx-suffix .cpp --xml-parser expat --output-dir internal --generate-validation ../../xml/xsd/dmd.xsd; sed -i 's/ns == "urn:mil:jpeojtrs:sca:dmd"/ns.empty()/g' internal/dmd-pskel.cpp; sed -i 's/"urn:mil:jpeojtrs:sca:dmd"/""/g' internal/dmd-pskel.cpp 
xsdcxx cxx-parser --root-element devicepkg --hxx-suffix .h --cxx-suffix .cpp --xml-parser expat --output-dir internal --generate-validation ../../xml/xsd/dpd.xsd
xsdcxx cxx-parser --root-element properties --type-map internal/prf.map --hxx-suffix .h --cxx-suffix .cpp --xml-parser expat --output-dir internal --generate-validation ../../xml/xsd/prf.xsd; sed -i 's/ns == "urn:mil:jpeojtrs:sca:prf"/ns.empty()/g' internal/prf-pskel.cpp; sed -i 's/"urn:mil:jpeojtrs:sca:prf"/""/g' internal/prf-pskel.cpp
xsdcxx cxx-parser --root-element profile --hxx-suffix .h --cxx-suffix .cpp --xml-parser expat --output-dir internal --generate-validation ../../xml/xsd/profile.xsd
xsdcxx cxx-parser --root-element softwareassembly --type-map internal/sad.map --hxx-suffix .h --cxx-suffix .cpp --xml-parser expat --output-dir internal --generate-validation ../../xml/xsd/sad.xsd; sed -i 's/ns == "urn:mil:jpeojtrs:sca:sad"/ns.empty()/g' internal/sad-pskel.cpp; sed -i 's/"urn:mil:jpeojtrs:sca:sad"/""/g' internal/sad-pskel.cpp
xsdcxx cxx-parser --root-element softwarecomponent --type-map internal/scd.map --hxx-suffix .h --cxx-suffix .cpp --xml-parser expat --output-dir internal --generate-validation ../../xml/xsd/scd.xsd; sed -i 's/ns == "urn:mil:jpeojtrs:sca:scd"/ns.empty()/g' internal/scd-pskel.cpp; sed -i 's/"urn:mil:jpeojtrs:sca:scd"/""/g' internal/scd-pskel.cpp
xsdcxx cxx-parser --root-element softpkg --type-map internal/spd.map --hxx-suffix .h --cxx-suffix .cpp --xml-parser expat --output-dir internal --generate-validation ../../xml/xsd/spd.xsd; sed -i 's/ns == "urn:mil:jpeojtrs:sca:spd"/ns.empty()/g' internal/spd-pskel.cpp; sed -i 's/"urn:mil:jpeojtrs:sca:spd"/""/g' internal/spd-pskel.cpp 
make  all-am
make[3]: Entering directory '/home/brasssm1/workspace/draco/redhawk-src-2.0.3/redhawk/src/control/parser'
  CXX      libossieparser_la-Properties.lo
  CXX      libossieparser_la-debug.lo
  CXX      libossieparser_la-SoftPkg.lo
  CXX      libossieparser_la-DomainManagerConfiguration.lo
  CXX      libossieparser_la-ComponentDescriptor.lo
  CXX      libossieparser_la-SoftwareAssembly.lo
  CXX      libossieparser_la-componentProfile.lo
  CXX      libossieparser_la-DeviceManagerConfiguration.lo
  CXX      internal/libossieparser_la-prf-pskel.lo
In file included from /usr/include/xsd/cxx/parser/expat/elements.hxx:362:0,
                 from internal/sad-pskel.h:114,
                 from internal/sad-pimpl.h:30,
                 from internal/sad-parser.h:27,
                 from SoftwareAssembly.cpp:22:
/usr/include/xsd/cxx/parser/expat/elements.txx: In member function ‘bool xsd::cxx::parser::expat::document<C>::parse(std::istream&, const std::__cxx11::basic_string<_CharT>*, const std::__cxx11::basic_string<_CharT>*, xsd::cxx::xml::error_handler<C>&)’:
/usr/include/xsd/cxx/parser/expat/elements.txx:282:22: error: no match for ‘operator==’ (operand types are ‘xsd::cxx::parser::expat::parser_auto_ptr’ and ‘int’)
           if (parser == 0)
                      ^
In file included from /usr/include/xsd/cxx/parser/xml-schema.hxx:569:0,
                 from internal/sad-pskel.h:109,
                 from internal/sad-pimpl.h:30,
                 from internal/sad-parser.h:27,
                 from SoftwareAssembly.cpp:22:
/usr/include/xsd/cxx/parser/xml-schema.txx:15:7: note: candidate: template<class C> bool xsd::cxx::parser::operator==(const xsd::cxx::parser::string_sequence<C>&, const xsd::cxx::parser::string_sequence<C>&)
       operator== (const string_sequence<C>& a, const string_sequence<C>& b)
       ^
/usr/include/xsd/cxx/parser/xml-schema.txx:15:7: note:   template argument deduction/substitution failed:
In file included from /usr/include/xsd/cxx/parser/expat/elements.hxx:362:0,
                 from internal/sad-pskel.h:114,
                 from internal/sad-pimpl.h:30,
                 from internal/sad-parser.h:27,
                 from SoftwareAssembly.cpp:22:
/usr/include/xsd/cxx/parser/expat/elements.txx:282:25: note:   ‘xsd::cxx::parser::expat::parser_auto_ptr’ is not derived from ‘const xsd::cxx::parser::string_sequence<C>’
           if (parser == 0)

我按照说明下载了依赖项,但在更新存储库时发现了一个错误:

E: 获取失败 http://ppa.launchpad.net/redhawksdr/redhawk/ubuntu/dists/xenial/main/binary-amd64/Packages 404 未找到

E: 某些索引文件下载失败。他们被忽视了,或者老了 代替使用的。

我不确定这是否会导致任何问题。

【问题讨论】:

    标签: ubuntu-16.04 redhawksdr


    【解决方案1】:

    看起来这是 expat 中的一个错误,这是一个 link,它为类似的错误提供了一些差异。

    您需要应用相同类型的修复,在 elements.txx 第 282 行将 parser == 0 更改为 parser.get() == 0

    这就是 expat 的 git repo 的当前 HEAD 的样子,他们有相同的修复

    完成该修复后,框架应该可以编译。

    关于 404 错误,该 ppa 中只有 Trusty (14.04) 的软件包。你可以看到here。在大多数情况下,16.04 的默认存储库中提供的 omniEvents 包应该可以正常工作。

    【讨论】:

    • 成功了!我正要走修改外籍代码的道路,所以这确实节省了我一些时间。
    • 很高兴它有帮助!
    猜你喜欢
    • 2018-09-24
    • 2017-08-16
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2018-12-15
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多