我正在尝试在64位Linux机器上为32位库编译googlr protobuf 3.5.2。我得到以下错误。请帮助。我能够在同一台Linux机器上编译64位库。
错误
./ google / protobuf / stubs / hash.h:在全球范围内: ./google/protobuf/stubs/hash.h:在“ google :: protobuf :: hash”的实例中: ./google/protobuf/map_field.h:817:从此处实例化 ./google/protobuf/stubs/hash.h:336:错误:无效使用未定义类型'struct std :: tr1 :: hash' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/functional:1101:错误:声明'struct std :: tr1 :: hash' ./google/protobuf/map_field.h:在成员函数'size_t google :: protobuf :: hash :: operator()(const google :: protobuf :: MapKey&)const'中: ./google/protobuf/map_field.h:817:错误:与“(google :: protobuf :: hash)(google :: protobuf :: int64)”的调用不匹配 ./google/protobuf/stubs/hash.h:在全球范围内: ./google/protobuf/stubs/hash.h:在“ google :: protobuf :: hash”的实例中: ./google/protobuf/map_field.h:821:从此处实例化 ./google/protobuf/stubs/hash.h:336:错误:无效使用未定义类型'struct std :: tr1 :: hash' /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/functional:1101:错误:声明'struct std :: tr1 :: hash' ./google/protobuf/map_field.h:在成员函数'size_t google :: protobuf :: hash :: operator()(const google :: protobuf :: MapKey&)const'中: ./google/protobuf/map_field.h:821:错误:与“(google :: protobuf :: hash)(google :: protobuf :: uint64)”调用不匹配
Env详细信息
-bash-3.2 $ uname -a Linux bvmlin-usdev2 2.6.18-238.el5#1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU / Linux
-bash-3.2 $ g ++-版本 g ++(GCC)4.1.2 20080704(Red Hat 4.1.2-50) 版权所有(C)2006 Free Software Foundation,Inc. 这是免费软件;请参阅复制条件的来源。没有 保证;甚至不是出于适销性或针对特定目的的适用性。
protobuf配置 ./configure CXXFLAGS =“-m32 -DNDEBUG”
还尝试在configure.ac文件本身中更改CXXFlags,然后运行autogen,configure。 我能够在Windows上为32和64位以及64位linux编译相同的源代码(3.5.2)。
请帮助我 -protobuf的3.5.2版本是否支持32位linux编译? -如果需要的话,在运行autogen或配置之前需要进行一些单独的更改/标记吗?