TensorFlowをvirtualenv
経由でインストールしました。それはうまくいく。TensorFlowバージョン不一致
今、私はC++を使ってモデルを読み込み、予測をしたいと思います。しかし、バージョンの不一致が原因でプログラムがコンパイルされません。
$ pip show protobuf
Name: protobuf
Version: 3.4.0
Summary: Protocol Buffers
そしてシェルで:virtualenvので
tensorflow/core/framework/device_attributes.pb.h:17:2: error: #error This file was generated by an older version of protoc which is
#error This file was generated by an older version of protoc which is
^
tensorflow/core/framework/device_attributes.pb.h:18:2: error: #error incompatible with your Protocol Buffer headers. Please
#error incompatible with your Protocol Buffer headers. Please
^
tensorflow/core/framework/device_attributes.pb.h:19:2: error: #error regenerate this file with a newer version of protoc.
#error regenerate this file with a newer version of protoc.
:エラーのよう
$ protoc --version
libprotoc 3.4.0
私は、私の環境でprotobuf-2.6.1
を持っていますが、今3.4.0
にアップグレードするために使用しました。問題はTensorFlowコンパイルプロセスが使用していることです
のUbuntu 16.04
私はソースからprotobufをインストールする前に、 'apt-get protobuf-dev protobuf-compiler'を実行しました。しかし、実際には '/ usr/local/lib 'に' '/ usr/lib'の下に' libprotobuf.so'があります。 Btwには私のubuntuに 'libprotobuf9v5'があり、それが理由だと思います。しかし、アンインストールすると同時にgnome-desktopや他のパッケージが削除されます。 –
@JasonRenはい、 'libprotobuf9v5'はUbuntuのC++プロトコルバッファランタイムライブラリです。 Gnomeはプロトコルバッファ自体を使用しているようですので、それを削除することはお勧めできません。新しいバージョンをコンパイルして、適切なヘッダーとライブラリを選択するようにコンパイラとリンカーを構成する必要があります(静的リンクを推奨します。そうしないと、プログラムは古いバージョンをシステムにインストールして失敗します)。 – jdehesa
しかし、protobufは自分のコードでは使用されていません。 TensorFlowはそれを使用します。私が直接使用していないライブラリを静的リンクするにはどうしたらいいですか?@jdehesa –