Ошибка компиляции Protobuf-2.6.1 на Solaris 10 SPARC 64

При попытке скомпилировать Protobuf-2.6.1 на Solaris 10 SPARC 64 я получаю:

./google/protobuf/stubs/once.h: In function `void google::protobuf::GoogleOnceInit(google::protobuf::ProtobufOnceType*, void (*)())':
./google/protobuf/stubs/once.h:125: error: cannot convert `google::protobuf::ProtobufOnceType*' to `const volatile google::protobuf::internal::Atomic32*' for argument `1' to `google::protobuf::internal::Atomic32 google::protobuf::internal::Acquire_Load(const volatile google::protobuf::internal::Atomic32*)'
./google/protobuf/stubs/once.h: In function `void google::protobuf::GoogleOnceInit(google::protobuf::ProtobufOnceType*, void (*)(Arg*), Arg*)':
./google/protobuf/stubs/once.h:134: error: cannot convert `google::protobuf::ProtobufOnceType*' to `const volatile google::protobuf::internal::Atomic32*' for argument `1' to `google::protobuf::internal::Atomic32 google::protobuf::internal::Acquire_Load(const volatile google::protobuf::internal::Atomic32*)'

Я следовал за Официальным README, ./configure а также make,

Версия компилятора (GCC):

$ gcc -v
Reading specs from /usr/sfw/lib/gcc/sparc-sun-solaris2.10/3.4.3/specs
Configured with: /sfw10/builds/build/sfw10-patch/usr/src/cmd/gcc/gcc-3.4.3/configure --prefix=/usr/sfw --with-as=/usr/ccs/bin/as --without-gnu-as --with-ld=/usr/ccs/bin/ld --without-gnu-ld --enable-languages=c,c++ --enable-shared
Thread model: posix
gcc version 3.4.3 (csl-sol210-3_4-branch+sol_rpath)

Я также прочитал вопрос созданные файлы protobuf не компилируются в Solaris SPARC 64 и пытался, но это не сработало. Эта статья работает на Protobuf-2.4.1, но Protobuf-2.6.1 изменяется:

2014-10-20 version 2.6.1:

C++
* Added atomicops support for Solaris.

Есть ли способ заставить GCC принудительно преобразовать указатель?

1

Решение

Я решил проблему в соответствии с проблемой GitHub # 789

Основная причина заключается в 4-й точке этого выпуска. Предопределенный макрос SOLARIS_64BIT_ENABLED не действует вообще.

Проблема может быть решена простым добавлением -m64 -DSOLARIS_64BIT_ENABLED в CXXFLAGS и CFLAGS. Но лучше сделать целую модификацию, как предложено.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]