lizhirui 发表于 2016-1-13 19:00:21

Linux下编译ndless-sdk4.0出现大量语法错误

Linux下编译ndless-sdk4.0出现大量语法错误
操作系统为Centos6.5
GCC 4.8.2
gmp 4.3.1
mpc 0.8.1
mpft 2.4.2
python 2.6.6
# cd /root/ndless_sdk/
-bash: cd: /root/ndless_sdk/: 没有那个文件或目录
# cd /root
# ls
anaconda-ks.cfg    gmp-4.3.1.tar.bz2   mpc-0.8.1.tar.gz    Python-2.7.4
foo2zjs            install.log         mpc-1.0.3         Python-2.7.4.tgz
foo2zjs.tar.gz   install.log.syslogmpc-1.0.3.tar.gz    wget-log
gcc-4.8.2          LCD-show            mpfr-2.4.2
gcc-4.8.2.tar.bz2LCD-show.tar.gz   mpfr-2.4.2.tar.bz2
gmp-4.3.1          mpc-0.8.1         ndless-sdk
# cd ndless-sdk
# cd toolchain
# ./build_toolchain.sh
Building and installing to '/root/ndless-sdk/toolchain/install'...
Building Binutils...
Building GCC (step 1)...
Building Newlib...
Building GCC (step 2)...
Building GDB...
Building genzehn...
rm -f genzehn
g++ -Wall -Wextra -std=c++11 -I elfio-2.2 genzehn.cpp -lboost_program_options -lz -o genzehn || g++ -Wall -Wextra -std=c++11 -I elfio-2.2 genzehn.cpp -lboost_program_options-mt -lz -o genzehn
In file included from genzehn.cpp:12:0:
zehn.h:1:1: 错误:expected unqualified-id before ‘.’ token
../../include/zehn.h
^
genzehn.cpp: 在函数‘int main(int, char**)’中:
genzehn.cpp:87:9: 错误:‘Zehn_header’在此作用域中尚未声明
         Zehn_header header;
         ^
genzehn.cpp:87:21: 错误:expected ‘;’ before ‘header’
         Zehn_header header;
                     ^
genzehn.cpp:101:29: 错误:‘ZEHN_SIGNATURE’在此作用域中尚未声明
             if(buffer == ZEHN_SIGNATURE && buffer == ZEHN_VERSION)
                           ^
genzehn.cpp:101:64: 错误:‘ZEHN_VERSION’在此作用域中尚未声明
             if(buffer == ZEHN_SIGNATURE && buffer == ZEHN_VERSION)
                                                                ^
genzehn.cpp:117:53: 错误:‘header’在此作用域中尚未声明
         if(!zehn_file.read(reinterpret_cast<char*>(&header), sizeof(header)))
                                                   ^
genzehn.cpp:126:25: 错误:‘header’在此作用域中尚未声明
                      << header.reloc_count << "\trelocations" << std::endl
                         ^
genzehn.cpp:134:21: 错误:‘Zehn_reloc’在此作用域中尚未声明
         std::vector<Zehn_reloc> relocs(header.reloc_count);
                     ^
genzehn.cpp:134:31: 错误:模板第 1 个参数无效
         std::vector<Zehn_reloc> relocs(header.reloc_count);
                               ^
genzehn.cpp:134:31: 错误:模板第 2 个参数无效
genzehn.cpp:134:39: 错误:invalid type in declaration before ‘(’ token
         std::vector<Zehn_reloc> relocs(header.reloc_count);
                                       ^
genzehn.cpp:135:21: 错误:‘Zehn_flag’在此作用域中尚未声明
         std::vector<Zehn_flag> flags(header.flag_count);
                     ^
genzehn.cpp:135:30: 错误:模板第 1 个参数无效
         std::vector<Zehn_flag> flags(header.flag_count);
                              ^
genzehn.cpp:135:30: 错误:模板第 2 个参数无效
genzehn.cpp:135:37: 错误:invalid type in declaration before ‘(’ token
         std::vector<Zehn_flag> flags(header.flag_count);
                                     ^
genzehn.cpp:138:59: 错误:对成员‘data’的请求出现在‘relocs’中,而后者具有非类类型‘int’
         if(!zehn_file.read(reinterpret_cast<char*>(relocs.data()), sizeof(Zehn_reloc) * header.reloc_count))
                                                         ^
genzehn.cpp:144:58: 错误:对成员‘data’的请求出现在‘flags’中,而后者具有非类类型‘int’
         if(!zehn_file.read(reinterpret_cast<char*>(flags.data()), sizeof(Zehn_flag) * header.flag_count))
                                                          ^
genzehn.cpp:156:47: 错误:‘int’用作数组下标类型无效
         if(header.reloc_count != 0 && relocs.type == Zehn_reloc_type::FILE_COMPRESSED)
                                             ^
genzehn.cpp:156:57: 错误:‘Zehn_reloc_type’未声明
         if(header.reloc_count != 0 && relocs.type == Zehn_reloc_type::FILE_COMPRESSED)
                                                         ^
genzehn.cpp:157:70: 错误:‘int’用作数组下标类型无效
             std::cout << "This file is compressed (type " << relocs.offset << ")" << std::endl;
                                                                      ^
genzehn.cpp:160:25: 错误:对‘begin(int&)’的调用没有匹配的函数
         for(auto flag : flags)
                         ^
genzehn.cpp:160:25: 附注:备选是:
In file included from /usr/local/gcc/include/c++/4.8.2/bits/basic_string.h:42:0,
               from /usr/local/gcc/include/c++/4.8.2/string:52,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/initializer_list:89:5: 附注:template<class _Tp> constexpr const _Tp* std::begin(std::initializer_list<_Tp>)
   begin(initializer_list<_Tp> __ils) noexcept
   ^
/usr/local/gcc/include/c++/4.8.2/initializer_list:89:5: 附注:template argument deduction/substitution failed:
genzehn.cpp:160:25: 附注:mismatched types ‘std::initializer_list<_Tp>’ and ‘int’
         for(auto flag : flags)
                         ^
In file included from /usr/local/gcc/include/c++/4.8.2/string:51:0,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:87:5: 附注:template<class _Tp, unsigned int _Nm> _Tp* std::begin(_Tp (&))
   begin(_Tp (&__arr))
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:87:5: 附注:template argument deduction/substitution failed:
genzehn.cpp:160:25: 附注:mismatched types ‘_Tp ’ and ‘int’
         for(auto flag : flags)
                         ^
In file included from /usr/local/gcc/include/c++/4.8.2/string:51:0,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:58:5: 附注:template<class _Container> decltype (__cont.begin()) std::begin(const _Container&)
   begin(const _Container& __cont) -> decltype(__cont.begin())
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:58:5: 附注:template argument deduction/substitution failed:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.begin()) std::begin(const _Container&) ’:
genzehn.cpp:160:25:   required from here
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:58:5: 错误:对成员‘begin’的请求出现在‘__cont’中,而后者具有非类类型‘const int’
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:48:5: 附注:template<class _Container> decltype (__cont.begin()) std::begin(_Container&)
   begin(_Container& __cont) -> decltype(__cont.begin())
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:48:5: 附注:template argument deduction/substitution failed:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.begin()) std::begin(_Container&) ’:
genzehn.cpp:160:25:   required from here
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:48:5: 错误:对成员‘begin’的请求出现在‘__cont’中,而后者具有非类类型‘int’
genzehn.cpp:160:25: 错误:对‘end(int&)’的调用没有匹配的函数
         for(auto flag : flags)
                         ^
genzehn.cpp:160:25: 附注:备选是:
In file included from /usr/local/gcc/include/c++/4.8.2/bits/basic_string.h:42:0,
               from /usr/local/gcc/include/c++/4.8.2/string:52,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/initializer_list:99:5: 附注:template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)
   end(initializer_list<_Tp> __ils) noexcept
   ^
/usr/local/gcc/include/c++/4.8.2/initializer_list:99:5: 附注:template argument deduction/substitution failed:
genzehn.cpp:160:25: 附注:mismatched types ‘std::initializer_list<_Tp>’ and ‘int’
         for(auto flag : flags)
                         ^
In file included from /usr/local/gcc/include/c++/4.8.2/string:51:0,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:97:5: 附注:template<class _Tp, unsigned int _Nm> _Tp* std::end(_Tp (&))
   end(_Tp (&__arr))
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:97:5: 附注:template argument deduction/substitution failed:
genzehn.cpp:160:25: 附注:mismatched types ‘_Tp ’ and ‘int’
         for(auto flag : flags)
                         ^
In file included from /usr/local/gcc/include/c++/4.8.2/string:51:0,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:78:5: 附注:template<class _Container> decltype (__cont.end()) std::end(const _Container&)
   end(const _Container& __cont) -> decltype(__cont.end())
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:78:5: 附注:template argument deduction/substitution failed:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.end()) std::end(const _Container&) ’:
genzehn.cpp:160:25:   required from here
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:78:5: 错误:对成员‘end’的请求出现在‘__cont’中,而后者具有非类类型‘const int’
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:68:5: 附注:template<class _Container> decltype (__cont.end()) std::end(_Container&)
   end(_Container& __cont) -> decltype(__cont.end())
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:68:5: 附注:template argument deduction/substitution failed:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.end()) std::end(_Container&) ’:
genzehn.cpp:160:25:   required from here
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:68:5: 错误:对成员‘end’的请求出现在‘__cont’中,而后者具有非类类型‘int’
genzehn.cpp:164:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::EXECUTABLE_NAME:
                  ^
genzehn.cpp:167:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::EXECUTABLE_VERSION:
                  ^
genzehn.cpp:170:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::EXECUTABLE_AUTHOR:
                  ^
genzehn.cpp:173:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::EXECUTABLE_NOTICE:
                  ^
genzehn.cpp:176:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::NDLESS_VERSION_MAX:
                  ^
genzehn.cpp:177:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::NDLESS_VERSION_MIN:
                  ^
genzehn.cpp:178:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::NDLESS_REVISION_MAX:
                  ^
genzehn.cpp:179:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::NDLESS_REVISION_MIN:
                  ^
genzehn.cpp:180:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::RUNS_ON_32MB:
                  ^
genzehn.cpp:181:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::RUNS_ON_CLICKPAD:
                  ^
genzehn.cpp:182:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::RUNS_ON_COLOR:
                  ^
genzehn.cpp:183:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::RUNS_ON_TOUCHPAD:
                  ^
genzehn.cpp:204:5: 错误:‘elfio’在此作用域中尚未声明
   elfio input_reader;
   ^
genzehn.cpp:204:5: 附注:建议的替代:
In file included from genzehn.cpp:10:0:
elfio-2.2/elfio/elfio.hpp:68:7: 附注:‘ELFIO::elfio’
class elfio
       ^
genzehn.cpp:204:11: 错误:expected ‘;’ before ‘input_reader’
   elfio input_reader;
         ^
genzehn.cpp:206:9: 错误:‘input_reader’在此作用域中尚未声明
   if(!input_reader.load(args["input"].as<std::string>()))
         ^
genzehn.cpp:212:8: 错误:‘input_reader’在此作用域中尚未声明
   if(input_reader.get_machine() != EM_ARM)
      ^
genzehn.cpp:226:5: 错误:‘Zehn_header’在此作用域中尚未声明
   Zehn_header header;
   ^
genzehn.cpp:226:17: 错误:expected ‘;’ before ‘header’
   Zehn_header header;
               ^
genzehn.cpp:228:17: 错误:‘Zehn_reloc’在此作用域中尚未声明
   std::vector<Zehn_reloc> reloc_table;
               ^
genzehn.cpp:228:27: 错误:模板第 1 个参数无效
   std::vector<Zehn_reloc> reloc_table;
                           ^
genzehn.cpp:228:27: 错误:模板第 2 个参数无效
genzehn.cpp:228:40: 错误:invalid type in declaration before ‘;’ token
   std::vector<Zehn_reloc> reloc_table;
                                        ^
genzehn.cpp:229:17: 错误:‘Zehn_flag’在此作用域中尚未声明
   std::vector<Zehn_flag> flag_table;
               ^
genzehn.cpp:229:26: 错误:模板第 1 个参数无效
   std::vector<Zehn_flag> flag_table;
                        ^
genzehn.cpp:229:26: 错误:模板第 2 个参数无效
genzehn.cpp:229:38: 错误:invalid type in declaration before ‘;’ token
   std::vector<Zehn_flag> flag_table;
                                    ^
genzehn.cpp:234:14: 错误:‘Elf_Xword’在此作用域中尚未声明
   std::set<Elf_Xword> undefined_symbols; uint32_t got_address = 0; std::set<uint32_t> undo_relocs;
            ^
genzehn.cpp:234:14: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:39:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elf_types.hpp:54:18: 附注:‘ELFIO::Elf_Xword’
typedef uint64_t Elf_Xword;
                  ^
genzehn.cpp:234:23: 错误:模板第 1 个参数无效
   std::set<Elf_Xword> undefined_symbols; uint32_t got_address = 0; std::set<uint32_t> undo_relocs;
                     ^
genzehn.cpp:234:23: 错误:模板第 2 个参数无效
genzehn.cpp:234:23: 错误:模板第 3 个参数无效
genzehn.cpp:234:42: 错误:invalid type in declaration before ‘;’ token
   std::set<Elf_Xword> undefined_symbols; uint32_t got_address = 0; std::set<uint32_t> undo_relocs;
                                          ^
genzehn.cpp:237:58: 错误:‘ZEHN_VERSION’在此作用域中尚未声明
         std::cout << "Generating Zehn file, version " << ZEHN_VERSION << "." << std::endl;
                                                          ^
genzehn.cpp:239:5: 错误:‘header’在此作用域中尚未声明
   header.signature = ZEHN_SIGNATURE;
   ^
genzehn.cpp:239:24: 错误:‘ZEHN_SIGNATURE’在此作用域中尚未声明
   header.signature = ZEHN_SIGNATURE;
                        ^
genzehn.cpp:240:22: 错误:‘ZEHN_VERSION’在此作用域中尚未声明
   header.version = ZEHN_VERSION;
                      ^
genzehn.cpp:241:27: 错误:‘input_reader’在此作用域中尚未声明
   header.entry_offset = input_reader.get_entry();
                           ^
genzehn.cpp:248:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_NAME, zehn_extra_string(args["name"].as<std::string>(), extra_data)});
                  ^
genzehn.cpp:248:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_NAME, zehn_extra_string(args["name"].as<std::string>(), extra_data)});
                               ^
genzehn.cpp:250:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_AUTHOR, zehn_extra_string(args["author"].as<std::string>(), extra_data)});
                  ^
genzehn.cpp:250:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_AUTHOR, zehn_extra_string(args["author"].as<std::string>(), extra_data)});
                               ^
genzehn.cpp:252:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_VERSION, args["version"].as<uint32_t>()});
                  ^
genzehn.cpp:252:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_VERSION, args["version"].as<uint32_t>()});
                               ^
genzehn.cpp:254:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_NOTICE, zehn_extra_string(args["notice"].as<std::string>(), extra_data)});
                  ^
genzehn.cpp:254:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_NOTICE, zehn_extra_string(args["notice"].as<std::string>(), extra_data)});
                               ^
genzehn.cpp:257:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::NDLESS_VERSION_MIN, args["ndless-min"].as<uint32_t>()});
                  ^
genzehn.cpp:257:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::NDLESS_VERSION_MIN, args["ndless-min"].as<uint32_t>()});
                               ^
genzehn.cpp:259:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::NDLESS_REVISION_MIN, args["ndless-rev-min"].as<uint32_t>()});
                  ^
genzehn.cpp:259:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::NDLESS_REVISION_MIN, args["ndless-rev-min"].as<uint32_t>()});
                               ^
genzehn.cpp:261:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::NDLESS_VERSION_MAX, args["ndless-max"].as<uint32_t>()});
                  ^
genzehn.cpp:261:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::NDLESS_VERSION_MAX, args["ndless-max"].as<uint32_t>()});
                               ^
genzehn.cpp:263:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::NDLESS_REVISION_MAX, args["ndless-rev-max"].as<uint32_t>()});
                  ^
genzehn.cpp:263:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::NDLESS_REVISION_MAX, args["ndless-rev-max"].as<uint32_t>()});
                               ^
genzehn.cpp:265:16: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   flag_table.push_back({Zehn_flag_type::RUNS_ON_COLOR, args["color-support"].as<bool>()});
                ^
genzehn.cpp:265:27: 错误:‘Zehn_flag_type’未声明
   flag_table.push_back({Zehn_flag_type::RUNS_ON_COLOR, args["color-support"].as<bool>()});
                           ^
genzehn.cpp:266:16: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   flag_table.push_back({Zehn_flag_type::RUNS_ON_CLICKPAD, args["clickpad-support"].as<bool>()});
                ^
genzehn.cpp:266:27: 错误:‘Zehn_flag_type’未声明
   flag_table.push_back({Zehn_flag_type::RUNS_ON_CLICKPAD, args["clickpad-support"].as<bool>()});
                           ^
genzehn.cpp:267:16: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   flag_table.push_back({Zehn_flag_type::RUNS_ON_TOUCHPAD, args["touchpad-support"].as<bool>()});
                ^
genzehn.cpp:267:27: 错误:‘Zehn_flag_type’未声明
   flag_table.push_back({Zehn_flag_type::RUNS_ON_TOUCHPAD, args["touchpad-support"].as<bool>()});
                           ^
genzehn.cpp:268:16: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   flag_table.push_back({Zehn_flag_type::RUNS_ON_32MB, args["32MB-support"].as<bool>()});
                ^
genzehn.cpp:268:27: 错误:‘Zehn_flag_type’未声明
   flag_table.push_back({Zehn_flag_type::RUNS_ON_32MB, args["32MB-support"].as<bool>()});
                           ^
genzehn.cpp:273:9: 错误:‘section’在此作用域中尚未声明
         section *s = input_reader.sections;
         ^
genzehn.cpp:273:9: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:42:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elfio_section.hpp:31:7: 附注:‘ELFIO::section’
class section
       ^
genzehn.cpp:273:18: 错误:‘s’在此作用域中尚未声明
         section *s = input_reader.sections;
                  ^
genzehn.cpp:280:13: 错误:‘symbol_section_accessor’在此作用域中尚未声明
             symbol_section_accessor ssa(input_reader, s);
             ^
genzehn.cpp:280:13: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:622:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elfio_symbols.hpp:29:7: 附注:‘ELFIO::symbol_section_accessor’
class symbol_section_accessor
       ^
genzehn.cpp:280:37: 错误:expected ‘;’ before ‘ssa’
             symbol_section_accessor ssa(input_reader, s);
                                     ^
genzehn.cpp:281:23: 错误:expected ‘;’ before ‘count’
             Elf_Xword count = ssa.get_symbols_num();
                     ^
genzehn.cpp:282:27: 错误:expected ‘;’ before ‘i’
             for(Elf_Xword i = 0; i < count; ++i)
                           ^
genzehn.cpp:282:38: 错误:‘count’在此作用域中尚未声明
             for(Elf_Xword i = 0; i < count; ++i)
                                    ^
genzehn.cpp:282:38: 附注:建议的替代:
In file included from /usr/local/gcc/include/c++/4.8.2/algorithm:62:0,
               from genzehn.cpp:5:
/usr/local/gcc/include/c++/4.8.2/bits/stl_algo.h:4622:5: 附注:‘std::count’
   count(_InputIterator __first, _InputIterator __last, const _Tp& __value)
   ^
genzehn.cpp:284:17: 错误:‘Elf_Half’在此作用域中尚未声明
               Elf_Half section; std::string name; unsigned char bind, type;
               ^
genzehn.cpp:284:17: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:39:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elf_types.hpp:51:18: 附注:‘ELFIO::Elf_Half’
typedef uint16_t Elf_Half;
                  ^
genzehn.cpp:284:26: 错误:expected ‘;’ before ‘section’
               Elf_Half section; std::string name; unsigned char bind, type;
                        ^
genzehn.cpp:285:17: 错误:‘Elf64_Addr’在此作用域中尚未声明
               Elf64_Addr u1; Elf_Xword u2; unsigned char u3; //Unused
               ^
genzehn.cpp:285:17: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:39:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elf_types.hpp:59:18: 附注:‘ELFIO::Elf64_Addr’
typedef uint64_t Elf64_Addr;
                  ^
genzehn.cpp:285:28: 错误:expected ‘;’ before ‘u1’
               Elf64_Addr u1; Elf_Xword u2; unsigned char u3; //Unused
                            ^
genzehn.cpp:285:42: 错误:expected ‘;’ before ‘u2’
               Elf64_Addr u1; Elf_Xword u2; unsigned char u3; //Unused
                                          ^
genzehn.cpp:286:20: 错误:‘ssa’在此作用域中尚未声明
               if(ssa.get_symbol(i, name, u1, u2, bind, type, section, u3) && section == SHN_UNDEF)
                  ^
genzehn.cpp:286:44: 错误:‘u1’在此作用域中尚未声明
               if(ssa.get_symbol(i, name, u1, u2, bind, type, section, u3) && section == SHN_UNDEF)
                                          ^
genzehn.cpp:286:48: 错误:‘u2’在此作用域中尚未声明
               if(ssa.get_symbol(i, name, u1, u2, bind, type, section, u3) && section == SHN_UNDEF)
                                                ^
genzehn.cpp:294:39: 错误:对成员‘insert’的请求出现在‘undefined_symbols’中,而后者具有非类类型‘int’
                     undefined_symbols.insert(i);
                                       ^
genzehn.cpp:359:9: 错误:‘section’在此作用域中尚未声明
         section *s = input_reader.sections;
         ^
genzehn.cpp:359:9: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:42:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elfio_section.hpp:31:7: 附注:‘ELFIO::section’
class section
       ^
genzehn.cpp:359:18: 错误:‘s’在此作用域中尚未声明
         section *s = input_reader.sections;
                  ^
genzehn.cpp:372:25: 错误:对成员‘push_back’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
             reloc_table.push_back({Zehn_reloc_type::ADD_BASE_GOT, static_cast<uint32_t>(s->get_address())});
                         ^
genzehn.cpp:372:36: 错误:‘Zehn_reloc_type’未声明
             reloc_table.push_back({Zehn_reloc_type::ADD_BASE_GOT, static_cast<uint32_t>(s->get_address())});
                                    ^
genzehn.cpp:405:61: 错误:‘Elf32_Rel’在此作用域中尚未声明
         unsigned int entries_count = s->get_size() / sizeof(Elf32_Rel);
                                                             ^
genzehn.cpp:405:61: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:39:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elf_types.hpp:661:8: 附注:‘ELFIO::Elf32_Rel’
struct Elf32_Rel {
      ^
genzehn.cpp:411:15: 错误:‘Elf32_Rel’不是一个类型名
         const Elf32_Rel *entries = reinterpret_cast<const Elf32_Rel*>(s->get_data()), *entries_end = entries + entries_count;
               ^
genzehn.cpp:412:19: 错误:‘Elf32_Rel’不是一个类型名
         for(const Elf32_Rel *entry = entries; entry < entries_end; ++entry)
                   ^
genzehn.cpp:412:47: 错误:expected ‘;’ before ‘entry’
         for(const Elf32_Rel *entry = entries; entry < entries_end; ++entry)
                                             ^
genzehn.cpp:412:47: 错误:‘entry’在此作用域中尚未声明
genzehn.cpp:412:55: 错误:‘entries_end’在此作用域中尚未声明
         for(const Elf32_Rel *entry = entries; entry < entries_end; ++entry)
                                                       ^
genzehn.cpp:414:34: 错误:对成员‘find’的请求出现在‘undefined_symbols’中,而后者具有非类类型‘int’
             if(undefined_symbols.find(ELF32_R_SYM(entry->r_info)) != undefined_symbols.end())
                                  ^
genzehn.cpp:414:88: 错误:对成员‘end’的请求出现在‘undefined_symbols’中,而后者具有非类类型‘int’
             if(undefined_symbols.find(ELF32_R_SYM(entry->r_info)) != undefined_symbols.end())
                                                                                        ^
genzehn.cpp:444:29: 错误:对成员‘push_back’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
               reloc_table.push_back({Zehn_reloc_type::ADD_BASE, static_cast<uint32_t>(entry->r_offset)});
                           ^
genzehn.cpp:444:40: 错误:‘Zehn_reloc_type’未声明
               reloc_table.push_back({Zehn_reloc_type::ADD_BASE, static_cast<uint32_t>(entry->r_offset)});
                                        ^
genzehn.cpp:452:21: 错误:对成员‘push_back’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
         reloc_table.push_back({Zehn_reloc_type::SET_ZERO, offset});
                     ^
genzehn.cpp:452:32: 错误:‘Zehn_reloc_type’未声明
         reloc_table.push_back({Zehn_reloc_type::SET_ZERO, offset});
                              ^
genzehn.cpp:476:21: 错误:对成员‘insert’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
         reloc_table.insert(reloc_table.begin(), {Zehn_reloc_type::FILE_COMPRESSED, static_cast<uint32_t>(Zehn_compress_type::ZLIB)});
                     ^
genzehn.cpp:476:40: 错误:对成员‘begin’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
         reloc_table.insert(reloc_table.begin(), {Zehn_reloc_type::FILE_COMPRESSED, static_cast<uint32_t>(Zehn_compress_type::ZLIB)});
                                        ^
genzehn.cpp:476:50: 错误:‘Zehn_reloc_type’未声明
         reloc_table.insert(reloc_table.begin(), {Zehn_reloc_type::FILE_COMPRESSED, static_cast<uint32_t>(Zehn_compress_type::ZLIB)});
                                                ^
genzehn.cpp:476:106: 错误:‘Zehn_compress_type’未声明
         reloc_table.insert(reloc_table.begin(), {Zehn_reloc_type::FILE_COMPRESSED, static_cast<uint32_t>(Zehn_compress_type::ZLIB)});
                                                                                                          ^
genzehn.cpp:482:38: 错误:对成员‘size’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
   header.reloc_count = reloc_table.size();
                                    ^
genzehn.cpp:483:36: 错误:对成员‘size’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   header.flag_count = flag_table.size();
                                    ^
genzehn.cpp:487:35: 错误:对成员‘size’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
                     + reloc_table.size() * sizeof(Zehn_reloc)
                                 ^
genzehn.cpp:488:34: 错误:对成员‘size’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
                     + flag_table.size() * sizeof(Zehn_flag)
                                  ^
genzehn.cpp:515:67: 错误:对成员‘data’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
   output_writer.write(reinterpret_cast<const char*>(reloc_table.data()), reloc_table.size() * sizeof(Zehn_reloc));
                                                                   ^
genzehn.cpp:515:88: 错误:对成员‘size’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
   output_writer.write(reinterpret_cast<const char*>(reloc_table.data()), reloc_table.size() * sizeof(Zehn_reloc));
                                                                                        ^
genzehn.cpp:516:66: 错误:对成员‘data’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   output_writer.write(reinterpret_cast<const char*>(flag_table.data()), flag_table.size() * sizeof(Zehn_flag));
                                                                  ^
genzehn.cpp:516:86: 错误:对成员‘size’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   output_writer.write(reinterpret_cast<const char*>(flag_table.data()), flag_table.size() * sizeof(Zehn_flag));
                                                                                    ^
In file included from genzehn.cpp:12:0:
zehn.h:1:1: 错误:expected unqualified-id before ‘.’ token
../../include/zehn.h
^
genzehn.cpp: 在函数‘int main(int, char**)’中:
genzehn.cpp:87:9: 错误:‘Zehn_header’在此作用域中尚未声明
         Zehn_header header;
         ^
genzehn.cpp:87:21: 错误:expected ‘;’ before ‘header’
         Zehn_header header;
                     ^
genzehn.cpp:101:29: 错误:‘ZEHN_SIGNATURE’在此作用域中尚未声明
             if(buffer == ZEHN_SIGNATURE && buffer == ZEHN_VERSION)
                           ^
genzehn.cpp:101:64: 错误:‘ZEHN_VERSION’在此作用域中尚未声明
             if(buffer == ZEHN_SIGNATURE && buffer == ZEHN_VERSION)
                                                                ^
genzehn.cpp:117:53: 错误:‘header’在此作用域中尚未声明
         if(!zehn_file.read(reinterpret_cast<char*>(&header), sizeof(header)))
                                                   ^
genzehn.cpp:126:25: 错误:‘header’在此作用域中尚未声明
                      << header.reloc_count << "\trelocations" << std::endl
                         ^
genzehn.cpp:134:21: 错误:‘Zehn_reloc’在此作用域中尚未声明
         std::vector<Zehn_reloc> relocs(header.reloc_count);
                     ^
genzehn.cpp:134:31: 错误:模板第 1 个参数无效
         std::vector<Zehn_reloc> relocs(header.reloc_count);
                               ^
genzehn.cpp:134:31: 错误:模板第 2 个参数无效
genzehn.cpp:134:39: 错误:invalid type in declaration before ‘(’ token
         std::vector<Zehn_reloc> relocs(header.reloc_count);
                                       ^
genzehn.cpp:135:21: 错误:‘Zehn_flag’在此作用域中尚未声明
         std::vector<Zehn_flag> flags(header.flag_count);
                     ^
genzehn.cpp:135:30: 错误:模板第 1 个参数无效
         std::vector<Zehn_flag> flags(header.flag_count);
                              ^
genzehn.cpp:135:30: 错误:模板第 2 个参数无效
genzehn.cpp:135:37: 错误:invalid type in declaration before ‘(’ token
         std::vector<Zehn_flag> flags(header.flag_count);
                                     ^
genzehn.cpp:138:59: 错误:对成员‘data’的请求出现在‘relocs’中,而后者具有非类类型‘int’
         if(!zehn_file.read(reinterpret_cast<char*>(relocs.data()), sizeof(Zehn_reloc) * header.reloc_count))
                                                         ^
genzehn.cpp:144:58: 错误:对成员‘data’的请求出现在‘flags’中,而后者具有非类类型‘int’
         if(!zehn_file.read(reinterpret_cast<char*>(flags.data()), sizeof(Zehn_flag) * header.flag_count))
                                                          ^
genzehn.cpp:156:47: 错误:‘int’用作数组下标类型无效
         if(header.reloc_count != 0 && relocs.type == Zehn_reloc_type::FILE_COMPRESSED)
                                             ^
genzehn.cpp:156:57: 错误:‘Zehn_reloc_type’未声明
         if(header.reloc_count != 0 && relocs.type == Zehn_reloc_type::FILE_COMPRESSED)
                                                         ^
genzehn.cpp:157:70: 错误:‘int’用作数组下标类型无效
             std::cout << "This file is compressed (type " << relocs.offset << ")" << std::endl;
                                                                      ^
genzehn.cpp:160:25: 错误:对‘begin(int&)’的调用没有匹配的函数
         for(auto flag : flags)
                         ^
genzehn.cpp:160:25: 附注:备选是:
In file included from /usr/local/gcc/include/c++/4.8.2/bits/basic_string.h:42:0,
               from /usr/local/gcc/include/c++/4.8.2/string:52,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/initializer_list:89:5: 附注:template<class _Tp> constexpr const _Tp* std::begin(std::initializer_list<_Tp>)
   begin(initializer_list<_Tp> __ils) noexcept
   ^
/usr/local/gcc/include/c++/4.8.2/initializer_list:89:5: 附注:template argument deduction/substitution failed:
genzehn.cpp:160:25: 附注:mismatched types ‘std::initializer_list<_Tp>’ and ‘int’
         for(auto flag : flags)
                         ^
In file included from /usr/local/gcc/include/c++/4.8.2/string:51:0,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:87:5: 附注:template<class _Tp, unsigned int _Nm> _Tp* std::begin(_Tp (&))
   begin(_Tp (&__arr))
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:87:5: 附注:template argument deduction/substitution failed:
genzehn.cpp:160:25: 附注:mismatched types ‘_Tp ’ and ‘int’
         for(auto flag : flags)
                         ^
In file included from /usr/local/gcc/include/c++/4.8.2/string:51:0,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:58:5: 附注:template<class _Container> decltype (__cont.begin()) std::begin(const _Container&)
   begin(const _Container& __cont) -> decltype(__cont.begin())
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:58:5: 附注:template argument deduction/substitution failed:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.begin()) std::begin(const _Container&) ’:
genzehn.cpp:160:25:   required from here
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:58:5: 错误:对成员‘begin’的请求出现在‘__cont’中,而后者具有非类类型‘const int’
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:48:5: 附注:template<class _Container> decltype (__cont.begin()) std::begin(_Container&)
   begin(_Container& __cont) -> decltype(__cont.begin())
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:48:5: 附注:template argument deduction/substitution failed:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.begin()) std::begin(_Container&) ’:
genzehn.cpp:160:25:   required from here
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:48:5: 错误:对成员‘begin’的请求出现在‘__cont’中,而后者具有非类类型‘int’
genzehn.cpp:160:25: 错误:对‘end(int&)’的调用没有匹配的函数
         for(auto flag : flags)
                         ^
genzehn.cpp:160:25: 附注:备选是:
In file included from /usr/local/gcc/include/c++/4.8.2/bits/basic_string.h:42:0,
               from /usr/local/gcc/include/c++/4.8.2/string:52,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/initializer_list:99:5: 附注:template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)
   end(initializer_list<_Tp> __ils) noexcept
   ^
/usr/local/gcc/include/c++/4.8.2/initializer_list:99:5: 附注:template argument deduction/substitution failed:
genzehn.cpp:160:25: 附注:mismatched types ‘std::initializer_list<_Tp>’ and ‘int’
         for(auto flag : flags)
                         ^
In file included from /usr/local/gcc/include/c++/4.8.2/string:51:0,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:97:5: 附注:template<class _Tp, unsigned int _Nm> _Tp* std::end(_Tp (&))
   end(_Tp (&__arr))
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:97:5: 附注:template argument deduction/substitution failed:
genzehn.cpp:160:25: 附注:mismatched types ‘_Tp ’ and ‘int’
         for(auto flag : flags)
                         ^
In file included from /usr/local/gcc/include/c++/4.8.2/string:51:0,
               from /usr/local/gcc/include/c++/4.8.2/bits/locale_classes.h:40,
               from /usr/local/gcc/include/c++/4.8.2/bits/ios_base.h:41,
               from /usr/local/gcc/include/c++/4.8.2/ios:42,
               from /usr/local/gcc/include/c++/4.8.2/ostream:38,
               from /usr/local/gcc/include/c++/4.8.2/iostream:39,
               from genzehn.cpp:4:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:78:5: 附注:template<class _Container> decltype (__cont.end()) std::end(const _Container&)
   end(const _Container& __cont) -> decltype(__cont.end())
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:78:5: 附注:template argument deduction/substitution failed:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.end()) std::end(const _Container&) ’:
genzehn.cpp:160:25:   required from here
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:78:5: 错误:对成员‘end’的请求出现在‘__cont’中,而后者具有非类类型‘const int’
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:68:5: 附注:template<class _Container> decltype (__cont.end()) std::end(_Container&)
   end(_Container& __cont) -> decltype(__cont.end())
   ^
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:68:5: 附注:template argument deduction/substitution failed:
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h: In substitution of ‘template<class _Container> decltype (__cont.end()) std::end(_Container&) ’:
genzehn.cpp:160:25:   required from here
/usr/local/gcc/include/c++/4.8.2/bits/range_access.h:68:5: 错误:对成员‘end’的请求出现在‘__cont’中,而后者具有非类类型‘int’
genzehn.cpp:164:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::EXECUTABLE_NAME:
                  ^
genzehn.cpp:167:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::EXECUTABLE_VERSION:
                  ^
genzehn.cpp:170:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::EXECUTABLE_AUTHOR:
                  ^
genzehn.cpp:173:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::EXECUTABLE_NOTICE:
                  ^
genzehn.cpp:176:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::NDLESS_VERSION_MAX:
                  ^
genzehn.cpp:177:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::NDLESS_VERSION_MIN:
                  ^
genzehn.cpp:178:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::NDLESS_REVISION_MAX:
                  ^
genzehn.cpp:179:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::NDLESS_REVISION_MIN:
                  ^
genzehn.cpp:180:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::RUNS_ON_32MB:
                  ^
genzehn.cpp:181:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::RUNS_ON_CLICKPAD:
                  ^
genzehn.cpp:182:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::RUNS_ON_COLOR:
                  ^
genzehn.cpp:183:18: 错误:‘Zehn_flag_type’未声明
             case Zehn_flag_type::RUNS_ON_TOUCHPAD:
                  ^
genzehn.cpp:204:5: 错误:‘elfio’在此作用域中尚未声明
   elfio input_reader;
   ^
genzehn.cpp:204:5: 附注:建议的替代:
In file included from genzehn.cpp:10:0:
elfio-2.2/elfio/elfio.hpp:68:7: 附注:‘ELFIO::elfio’
class elfio
       ^
genzehn.cpp:204:11: 错误:expected ‘;’ before ‘input_reader’
   elfio input_reader;
         ^
genzehn.cpp:206:9: 错误:‘input_reader’在此作用域中尚未声明
   if(!input_reader.load(args["input"].as<std::string>()))
         ^
genzehn.cpp:212:8: 错误:‘input_reader’在此作用域中尚未声明
   if(input_reader.get_machine() != EM_ARM)
      ^
genzehn.cpp:226:5: 错误:‘Zehn_header’在此作用域中尚未声明
   Zehn_header header;
   ^
genzehn.cpp:226:17: 错误:expected ‘;’ before ‘header’
   Zehn_header header;
               ^
genzehn.cpp:228:17: 错误:‘Zehn_reloc’在此作用域中尚未声明
   std::vector<Zehn_reloc> reloc_table;
               ^
genzehn.cpp:228:27: 错误:模板第 1 个参数无效
   std::vector<Zehn_reloc> reloc_table;
                           ^
genzehn.cpp:228:27: 错误:模板第 2 个参数无效
genzehn.cpp:228:40: 错误:invalid type in declaration before ‘;’ token
   std::vector<Zehn_reloc> reloc_table;
                                        ^
genzehn.cpp:229:17: 错误:‘Zehn_flag’在此作用域中尚未声明
   std::vector<Zehn_flag> flag_table;
               ^
genzehn.cpp:229:26: 错误:模板第 1 个参数无效
   std::vector<Zehn_flag> flag_table;
                        ^
genzehn.cpp:229:26: 错误:模板第 2 个参数无效
genzehn.cpp:229:38: 错误:invalid type in declaration before ‘;’ token
   std::vector<Zehn_flag> flag_table;
                                    ^
genzehn.cpp:234:14: 错误:‘Elf_Xword’在此作用域中尚未声明
   std::set<Elf_Xword> undefined_symbols; uint32_t got_address = 0; std::set<uint32_t> undo_relocs;
            ^
genzehn.cpp:234:14: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:39:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elf_types.hpp:54:18: 附注:‘ELFIO::Elf_Xword’
typedef uint64_t Elf_Xword;
                  ^
genzehn.cpp:234:23: 错误:模板第 1 个参数无效
   std::set<Elf_Xword> undefined_symbols; uint32_t got_address = 0; std::set<uint32_t> undo_relocs;
                     ^
genzehn.cpp:234:23: 错误:模板第 2 个参数无效
genzehn.cpp:234:23: 错误:模板第 3 个参数无效
genzehn.cpp:234:42: 错误:invalid type in declaration before ‘;’ token
   std::set<Elf_Xword> undefined_symbols; uint32_t got_address = 0; std::set<uint32_t> undo_relocs;
                                          ^
genzehn.cpp:237:58: 错误:‘ZEHN_VERSION’在此作用域中尚未声明
         std::cout << "Generating Zehn file, version " << ZEHN_VERSION << "." << std::endl;
                                                          ^
genzehn.cpp:239:5: 错误:‘header’在此作用域中尚未声明
   header.signature = ZEHN_SIGNATURE;
   ^
genzehn.cpp:239:24: 错误:‘ZEHN_SIGNATURE’在此作用域中尚未声明
   header.signature = ZEHN_SIGNATURE;
                        ^
genzehn.cpp:240:22: 错误:‘ZEHN_VERSION’在此作用域中尚未声明
   header.version = ZEHN_VERSION;
                      ^
genzehn.cpp:241:27: 错误:‘input_reader’在此作用域中尚未声明
   header.entry_offset = input_reader.get_entry();
                           ^
genzehn.cpp:248:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_NAME, zehn_extra_string(args["name"].as<std::string>(), extra_data)});
                  ^
genzehn.cpp:248:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_NAME, zehn_extra_string(args["name"].as<std::string>(), extra_data)});
                               ^
genzehn.cpp:250:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_AUTHOR, zehn_extra_string(args["author"].as<std::string>(), extra_data)});
                  ^
genzehn.cpp:250:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_AUTHOR, zehn_extra_string(args["author"].as<std::string>(), extra_data)});
                               ^
genzehn.cpp:252:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_VERSION, args["version"].as<uint32_t>()});
                  ^
genzehn.cpp:252:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_VERSION, args["version"].as<uint32_t>()});
                               ^
genzehn.cpp:254:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_NOTICE, zehn_extra_string(args["notice"].as<std::string>(), extra_data)});
                  ^
genzehn.cpp:254:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::EXECUTABLE_NOTICE, zehn_extra_string(args["notice"].as<std::string>(), extra_data)});
                               ^
genzehn.cpp:257:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::NDLESS_VERSION_MIN, args["ndless-min"].as<uint32_t>()});
                  ^
genzehn.cpp:257:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::NDLESS_VERSION_MIN, args["ndless-min"].as<uint32_t>()});
                               ^
genzehn.cpp:259:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::NDLESS_REVISION_MIN, args["ndless-rev-min"].as<uint32_t>()});
                  ^
genzehn.cpp:259:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::NDLESS_REVISION_MIN, args["ndless-rev-min"].as<uint32_t>()});
                               ^
genzehn.cpp:261:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::NDLESS_VERSION_MAX, args["ndless-max"].as<uint32_t>()});
                  ^
genzehn.cpp:261:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::NDLESS_VERSION_MAX, args["ndless-max"].as<uint32_t>()});
                               ^
genzehn.cpp:263:20: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
         flag_table.push_back({Zehn_flag_type::NDLESS_REVISION_MAX, args["ndless-rev-max"].as<uint32_t>()});
                  ^
genzehn.cpp:263:31: 错误:‘Zehn_flag_type’未声明
         flag_table.push_back({Zehn_flag_type::NDLESS_REVISION_MAX, args["ndless-rev-max"].as<uint32_t>()});
                               ^
genzehn.cpp:265:16: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   flag_table.push_back({Zehn_flag_type::RUNS_ON_COLOR, args["color-support"].as<bool>()});
                ^
genzehn.cpp:265:27: 错误:‘Zehn_flag_type’未声明
   flag_table.push_back({Zehn_flag_type::RUNS_ON_COLOR, args["color-support"].as<bool>()});
                           ^
genzehn.cpp:266:16: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   flag_table.push_back({Zehn_flag_type::RUNS_ON_CLICKPAD, args["clickpad-support"].as<bool>()});
                ^
genzehn.cpp:266:27: 错误:‘Zehn_flag_type’未声明
   flag_table.push_back({Zehn_flag_type::RUNS_ON_CLICKPAD, args["clickpad-support"].as<bool>()});
                           ^
genzehn.cpp:267:16: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   flag_table.push_back({Zehn_flag_type::RUNS_ON_TOUCHPAD, args["touchpad-support"].as<bool>()});
                ^
genzehn.cpp:267:27: 错误:‘Zehn_flag_type’未声明
   flag_table.push_back({Zehn_flag_type::RUNS_ON_TOUCHPAD, args["touchpad-support"].as<bool>()});
                           ^
genzehn.cpp:268:16: 错误:对成员‘push_back’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   flag_table.push_back({Zehn_flag_type::RUNS_ON_32MB, args["32MB-support"].as<bool>()});
                ^
genzehn.cpp:268:27: 错误:‘Zehn_flag_type’未声明
   flag_table.push_back({Zehn_flag_type::RUNS_ON_32MB, args["32MB-support"].as<bool>()});
                           ^
genzehn.cpp:273:9: 错误:‘section’在此作用域中尚未声明
         section *s = input_reader.sections;
         ^
genzehn.cpp:273:9: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:42:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elfio_section.hpp:31:7: 附注:‘ELFIO::section’
class section
       ^
genzehn.cpp:273:18: 错误:‘s’在此作用域中尚未声明
         section *s = input_reader.sections;
                  ^
genzehn.cpp:280:13: 错误:‘symbol_section_accessor’在此作用域中尚未声明
             symbol_section_accessor ssa(input_reader, s);
             ^
genzehn.cpp:280:13: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:622:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elfio_symbols.hpp:29:7: 附注:‘ELFIO::symbol_section_accessor’
class symbol_section_accessor
       ^
genzehn.cpp:280:37: 错误:expected ‘;’ before ‘ssa’
             symbol_section_accessor ssa(input_reader, s);
                                     ^
genzehn.cpp:281:23: 错误:expected ‘;’ before ‘count’
             Elf_Xword count = ssa.get_symbols_num();
                     ^
genzehn.cpp:282:27: 错误:expected ‘;’ before ‘i’
             for(Elf_Xword i = 0; i < count; ++i)
                           ^
genzehn.cpp:282:38: 错误:‘count’在此作用域中尚未声明
             for(Elf_Xword i = 0; i < count; ++i)
                                    ^
genzehn.cpp:282:38: 附注:建议的替代:
In file included from /usr/local/gcc/include/c++/4.8.2/algorithm:62:0,
               from genzehn.cpp:5:
/usr/local/gcc/include/c++/4.8.2/bits/stl_algo.h:4622:5: 附注:‘std::count’
   count(_InputIterator __first, _InputIterator __last, const _Tp& __value)
   ^
genzehn.cpp:284:17: 错误:‘Elf_Half’在此作用域中尚未声明
               Elf_Half section; std::string name; unsigned char bind, type;
               ^
genzehn.cpp:284:17: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:39:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elf_types.hpp:51:18: 附注:‘ELFIO::Elf_Half’
typedef uint16_t Elf_Half;
                  ^
genzehn.cpp:284:26: 错误:expected ‘;’ before ‘section’
               Elf_Half section; std::string name; unsigned char bind, type;
                        ^
genzehn.cpp:285:17: 错误:‘Elf64_Addr’在此作用域中尚未声明
               Elf64_Addr u1; Elf_Xword u2; unsigned char u3; //Unused
               ^
genzehn.cpp:285:17: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:39:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elf_types.hpp:59:18: 附注:‘ELFIO::Elf64_Addr’
typedef uint64_t Elf64_Addr;
                  ^
genzehn.cpp:285:28: 错误:expected ‘;’ before ‘u1’
               Elf64_Addr u1; Elf_Xword u2; unsigned char u3; //Unused
                            ^
genzehn.cpp:285:42: 错误:expected ‘;’ before ‘u2’
               Elf64_Addr u1; Elf_Xword u2; unsigned char u3; //Unused
                                          ^
genzehn.cpp:286:20: 错误:‘ssa’在此作用域中尚未声明
               if(ssa.get_symbol(i, name, u1, u2, bind, type, section, u3) && section == SHN_UNDEF)
                  ^
genzehn.cpp:286:44: 错误:‘u1’在此作用域中尚未声明
               if(ssa.get_symbol(i, name, u1, u2, bind, type, section, u3) && section == SHN_UNDEF)
                                          ^
genzehn.cpp:286:48: 错误:‘u2’在此作用域中尚未声明
               if(ssa.get_symbol(i, name, u1, u2, bind, type, section, u3) && section == SHN_UNDEF)
                                                ^
genzehn.cpp:294:39: 错误:对成员‘insert’的请求出现在‘undefined_symbols’中,而后者具有非类类型‘int’
                     undefined_symbols.insert(i);
                                       ^
genzehn.cpp:359:9: 错误:‘section’在此作用域中尚未声明
         section *s = input_reader.sections;
         ^
genzehn.cpp:359:9: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:42:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elfio_section.hpp:31:7: 附注:‘ELFIO::section’
class section
       ^
genzehn.cpp:359:18: 错误:‘s’在此作用域中尚未声明
         section *s = input_reader.sections;
                  ^
genzehn.cpp:372:25: 错误:对成员‘push_back’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
             reloc_table.push_back({Zehn_reloc_type::ADD_BASE_GOT, static_cast<uint32_t>(s->get_address())});
                         ^
genzehn.cpp:372:36: 错误:‘Zehn_reloc_type’未声明
             reloc_table.push_back({Zehn_reloc_type::ADD_BASE_GOT, static_cast<uint32_t>(s->get_address())});
                                    ^
genzehn.cpp:405:61: 错误:‘Elf32_Rel’在此作用域中尚未声明
         unsigned int entries_count = s->get_size() / sizeof(Elf32_Rel);
                                                             ^
genzehn.cpp:405:61: 附注:建议的替代:
In file included from elfio-2.2/elfio/elfio.hpp:39:0,
               from genzehn.cpp:10:
elfio-2.2/elfio/elf_types.hpp:661:8: 附注:‘ELFIO::Elf32_Rel’
struct Elf32_Rel {
      ^
genzehn.cpp:411:15: 错误:‘Elf32_Rel’不是一个类型名
         const Elf32_Rel *entries = reinterpret_cast<const Elf32_Rel*>(s->get_data()), *entries_end = entries + entries_count;
               ^
genzehn.cpp:412:19: 错误:‘Elf32_Rel’不是一个类型名
         for(const Elf32_Rel *entry = entries; entry < entries_end; ++entry)
                   ^
genzehn.cpp:412:47: 错误:expected ‘;’ before ‘entry’
         for(const Elf32_Rel *entry = entries; entry < entries_end; ++entry)
                                             ^
genzehn.cpp:412:47: 错误:‘entry’在此作用域中尚未声明
genzehn.cpp:412:55: 错误:‘entries_end’在此作用域中尚未声明
         for(const Elf32_Rel *entry = entries; entry < entries_end; ++entry)
                                                       ^
genzehn.cpp:414:34: 错误:对成员‘find’的请求出现在‘undefined_symbols’中,而后者具有非类类型‘int’
             if(undefined_symbols.find(ELF32_R_SYM(entry->r_info)) != undefined_symbols.end())
                                  ^
genzehn.cpp:414:88: 错误:对成员‘end’的请求出现在‘undefined_symbols’中,而后者具有非类类型‘int’
             if(undefined_symbols.find(ELF32_R_SYM(entry->r_info)) != undefined_symbols.end())
                                                                                        ^
genzehn.cpp:444:29: 错误:对成员‘push_back’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
               reloc_table.push_back({Zehn_reloc_type::ADD_BASE, static_cast<uint32_t>(entry->r_offset)});
                           ^
genzehn.cpp:444:40: 错误:‘Zehn_reloc_type’未声明
               reloc_table.push_back({Zehn_reloc_type::ADD_BASE, static_cast<uint32_t>(entry->r_offset)});
                                        ^
genzehn.cpp:452:21: 错误:对成员‘push_back’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
         reloc_table.push_back({Zehn_reloc_type::SET_ZERO, offset});
                     ^
genzehn.cpp:452:32: 错误:‘Zehn_reloc_type’未声明
         reloc_table.push_back({Zehn_reloc_type::SET_ZERO, offset});
                              ^
genzehn.cpp:476:21: 错误:对成员‘insert’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
         reloc_table.insert(reloc_table.begin(), {Zehn_reloc_type::FILE_COMPRESSED, static_cast<uint32_t>(Zehn_compress_type::ZLIB)});
                     ^
genzehn.cpp:476:40: 错误:对成员‘begin’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
         reloc_table.insert(reloc_table.begin(), {Zehn_reloc_type::FILE_COMPRESSED, static_cast<uint32_t>(Zehn_compress_type::ZLIB)});
                                        ^
genzehn.cpp:476:50: 错误:‘Zehn_reloc_type’未声明
         reloc_table.insert(reloc_table.begin(), {Zehn_reloc_type::FILE_COMPRESSED, static_cast<uint32_t>(Zehn_compress_type::ZLIB)});
                                                ^
genzehn.cpp:476:106: 错误:‘Zehn_compress_type’未声明
         reloc_table.insert(reloc_table.begin(), {Zehn_reloc_type::FILE_COMPRESSED, static_cast<uint32_t>(Zehn_compress_type::ZLIB)});
                                                                                                          ^
genzehn.cpp:482:38: 错误:对成员‘size’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
   header.reloc_count = reloc_table.size();
                                    ^
genzehn.cpp:483:36: 错误:对成员‘size’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   header.flag_count = flag_table.size();
                                    ^
genzehn.cpp:487:35: 错误:对成员‘size’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
                     + reloc_table.size() * sizeof(Zehn_reloc)
                                 ^
genzehn.cpp:488:34: 错误:对成员‘size’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
                     + flag_table.size() * sizeof(Zehn_flag)
                                  ^
genzehn.cpp:515:67: 错误:对成员‘data’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
   output_writer.write(reinterpret_cast<const char*>(reloc_table.data()), reloc_table.size() * sizeof(Zehn_reloc));
                                                                   ^
genzehn.cpp:515:88: 错误:对成员‘size’的请求出现在‘reloc_table’中,而后者具有非类类型‘int’
   output_writer.write(reinterpret_cast<const char*>(reloc_table.data()), reloc_table.size() * sizeof(Zehn_reloc));
                                                                                        ^
genzehn.cpp:516:66: 错误:对成员‘data’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   output_writer.write(reinterpret_cast<const char*>(flag_table.data()), flag_table.size() * sizeof(Zehn_flag));
                                                                  ^
genzehn.cpp:516:86: 错误:对成员‘size’的请求出现在‘flag_table’中,而后者具有非类类型‘int’
   output_writer.write(reinterpret_cast<const char*>(flag_table.data()), flag_table.size() * sizeof(Zehn_flag));
                                                                                    ^
make: *** 错误 1

lch 发表于 2016-1-14 22:17:11

不明白你是怎么操作的,最好是能详细说一下。首先检查一下依赖的库有没有装好。而且你在编译genzehn之前有没有出现别的错误?

lizhirui 发表于 2016-1-14 23:11:36

我就是重新编译了 GMP MPFR MPC 4.8.2的GCC 然后就开始安装了 那些库似乎都安装过了
已经下载到WINDOWS版本的ndless-sdk了

lch 发表于 2016-1-15 00:29:04

lizhirui 发表于 2016-1-14 23:11
我就是重新编译了 GMP MPFR MPC 4.8.2的GCC 然后就开始安装了 那些库似乎都安装过了
已经下载到WINDOWS版 ...
gcc这类的工具不需要自行编译吧?完全可以在软件源里面安装

mrlgs 发表于 2016-1-15 16:03:35

本帖最后由 mrlgs 于 2016-1-19 12:19 编辑

知道错了,没仔细看论坛规则

lizhirui 发表于 2016-1-17 15:10:15

我大概知道什么问题了,之前我编译GCC的时候好像提示过安装未成功,也就是说编译器是不完全版本。

dousha99 发表于 2016-1-28 19:40:54

pastebin 的存在感呢?

adriweb 发表于 2016-1-29 07:21:37

Errors such as :
zehn.h:1:1: 错误:expected unqualified-id before ‘.’ token
../../include/zehn.h
^
are because the symlink didn't get made properly when getting the files from GitHub.

It's in the wiki page :
Fix the few symlinks, for instance genzehn/zehn.h in the genzehn folder, which has to be deleted then copied there from ndless-sdk/include (and if you intend to rebuild Ndless, utils.c from the resources folder into the different installers folders)
页: [1]
查看完整版本: Linux下编译ndless-sdk4.0出现大量语法错误