2

オープン ソース プロジェクトである Open Transactions を debian 8 にインストールしようとしています。すべての依存関係をインストールしましたが、コンパイル (make) 時に問題が発生しています。protobuf プロジェクトを確実にインストールしたにもかかわらず、次のエラーが端末に表示されます。

In file included from /root/opentxs/src/../include/opentxs/core/OTStoragePB.hpp:64:0,
                 from /root/opentxs/src/core/OTStorage.cpp:47:
/root/opentxs/build/src/core/otprotob/Generics.pb.h:501:6: error: "PROTOBUF_INLINE_NOT_IN_HEADERS" is not defined [-Werror=undef]
 #if !PROTOBUF_INLINE_NOT_IN_HEADERS
      ^
In file included from /root/opentxs/src/../include/opentxs/core/OTStoragePB.hpp:65:0,
                 from /root/opentxs/src/core/OTStorage.cpp:47:
/root/opentxs/build/src/core/otprotob/Markets.pb.h:2062:6: error: "PROTOBUF_INLINE_NOT_IN_HEADERS" is not defined [-Werror=undef]
 #if !PROTOBUF_INLINE_NOT_IN_HEADERS
      ^
In file included from /root/opentxs/src/../include/opentxs/core/OTStoragePB.hpp:66:0,
                 from /root/opentxs/src/core/OTStorage.cpp:47:
/root/opentxs/build/src/core/otprotob/Bitcoin.pb.h:833:6: error: "PROTOBUF_INLINE_NOT_IN_HEADERS" is not defined [-Werror=undef]
 #if !PROTOBUF_INLINE_NOT_IN_HEADERS
      ^
In file included from /root/opentxs/src/../include/opentxs/core/OTStoragePB.hpp:67:0,
                 from /root/opentxs/src/core/OTStorage.cpp:47:
/root/opentxs/build/src/core/otprotob/Moneychanger.pb.h:1026:6: error: "PROTOBUF_INLINE_NOT_IN_HEADERS" is not defined [-Werror=undef]
 #if !PROTOBUF_INLINE_NOT_IN_HEADERS
      ^
cc1plus: all warnings being treated as errors
src/core/CMakeFiles/opentxs-core.dir/build.make:1368: recipe for target 'src/core/CMakeFiles/opentxs-core.dir/OTStorage.cpp.o' failed
make[2]: *** [src/core/CMakeFiles/opentxs-core.dir/OTStorage.cpp.o] Error 1
make[2]: Leaving directory '/root/opentxs/build'
CMakeFiles/Makefile2:586: recipe for target 'src/core/CMakeFiles/opentxs-core.dir/all' failed
make[1]: *** [src/core/CMakeFiles/opentxs-core.dir/all] Error 2
make[1]: Leaving directory '/root/opentxs/build'
Makefile:150: recipe for target 'all' failed
make: *** [all] Error 2

これに対処する方法についてのアイデアはありますか?オンラインでヘルプが見つかりませんでした。

4

2 に答える 2

8

Ubuntu 14.04 でも同じ問題があり、あなたが言ったように修正しました。しかし、私は問題をもっと説明するために書いているだけです。
だから、エラーをグーグルで調べた後、私はこの議論を見つけました 。この問題は、Google コーダーが、C++ 標準では未定義のプリプロセッサ シンボルを 0 として評価することを許可しているという事実に依存しているという事実から生じると説明されています。PROTOBUF_INLINE_NOT_IN_HEADERSどこにも定義されていない場合。これは正当であり、ゼロであるかのように扱う必要があります。トップレベルの SConstruct の CCFLAGS と src/SConscript (CXXFLAGS) の CXXFLAGS に
追加することでこれを修正しました。-DPROTOBUF_INLINE_NOT_IN_HEADERS=0

したがって、これを修正するには、opentxs メイン フォルダにある CMakeList.txt に次の行を追加する必要があります。

add_definitions(-DPROTOBUF_INLINE_NOT_IN_HEADERS=0)

cmakeそして、ステップを繰り返すことを忘れないでください。

これがより明確で役立つことを願っています。

于 2015-12-27T21:27:47.623 に答える
0

CMakelists.txt の先頭にこの行を追加して、これを修正しました。

add_definitions(-DPROTOBUF_INLINE_NOT_IN_HEADERS=0)
于 2015-12-27T12:46:42.370 に答える