私はテキスト分類プロジェクトに取り組んでいます。これは大きく、ビルゼルツールとしてbazelを使用していません。自分のプロジェクトにテンソルフローを統合したいのですが、ビルドツールをbazelに変更するのは難しいです。ですから、私はtensorflowで静的ライブラリを構築し、それらを私のプロジェクトにリンクしたいと考えています。 誰かがスタンドアロンスタティックライブラリをtensorflowソースにビルドして既存のC++プロジェクトにリンクする方法を知っていますか?どうもありがとう。LinuxプラットフォームでC++プロジェクトに静的ライブラリとリンクを構築する方法は?
答えて
TensorFlowリポジトリには、静的ライブラリ(tensorflow/contrib/Makefileを参照)を構築するために使用できるMakefileがいくつかあります。
また、bazel
を使用してTensorFlow C++共有ライブラリを構築してから、共有ライブラリをロードしてアプリケーション(bazel build -c opt //tensorflow:libtensorflow_cc.so
)に使用することもできます。残念なことに、bazelはまだ静的ライブラリ(#1920)を生成できません。
希望に役立ちます。
おかげさまで、makefileチュートリアルの後、私はlibtensorflow-core.aを正常にビルドします。しかし、main.ccに "tensorflow/core/public/session.h"を含めて "gcc -c main.cc"を実行しようとすると、 'tensorflow/core/framework/graph.pb.h'ファイルが見つからないというエラーが表示されます。そのファイルはbazelによって自動的に生成されます。しかし、私はバゼルを使うことができませんでした。あなたはそれを知っていますか? –
'pb.h'ファイルは' gen/'サブディレクトリ(おそらく' gen/host_obj')のどこかにあるMakefileビルドによっても生成されます。そのディレクトリを 'gcc'のインクルードパスに追加する必要があります。 – ash
アドバイスをいただきありがとうございます。インクルードパスに必要なディレクトリを含めます。私はデモコードtest.ccを書いています。これには "session.h"と "env.h"が含まれています。そして、 "status status = NewSession(SessionOptions()、&session);"を使用して、test.ccでセッションを初期化します。次に、libtensorflow-core.aに "gcc -o test test.cc -I ... -L ... -ltensorflow-core -std = C++ 11"を使用してリンクしようとします。これは、アーキテクチャx86_64 clang:error:linkerコマンドが終了コード1で失敗しました(呼び出しを見るために-vを使用します) "というエラーを示しています。また、「OSXをビルドするが、iOS用に構築されたオブジェクトファイルにリンクする」という警告も出されている。 –
- 1. Cで静的ライブラリを構築する
- 2. eclipseでCプロジェクトをC++静的ライブラリ(opencvを使用)にリンクする方法
- 3. C++ LinuxターゲットアプリケーションをObjective-C静的ライブラリにリンクできますか?
- 4. cmakeで同時に静的ライブラリと共有ライブラリを構築する方法
- 5. C++クロスプラットフォーム静的ライブラリの構築
- 6. golangの.aライブラリをC++プロジェクトから静的にリンクする方法は?
- 7. プロジェクトにSFML静的ライブラリをリンクする
- 8. Linux GNUビルド:静的ライブラリのセットから動的ライブラリを構築する
- 9. Cで静的ライブラリにリンクする方法は?
- 10. Visual C++ 2008で静的ライブラリをリンクする方法は?
- 11. C#ClassLibraryのライブラリを静的にリンクする方法は?
- 12. C++/cmakeで静的ライブラリをリンクする
- 13. C++静的オブジェクトの構築を延期する - LinuxのGCC
- 14. 他の静的ライブラリにリンクする静的ライブラリに動的ライブラリをリンクする
- 15. Poco C++ライブラリの静的バージョンを構築する
- 16. 私のプロジェクトCMakeLists.txtからgtest静的ライブラリを構築するには?
- 17. 静的なC++ライブラリをCライブラリにリンクする
- 18. Linux上でライブラリを静的にリンクする
- 19. 静的ライブラリを作成するXcodeプロジェクトをセットアップする方法+構築と配布が容易なサンプルコード
- 20. MSVCでライブラリを静的にリンクする方法は?
- 21. armv6、armv7、i386のfat静的ライブラリの構築方法
- 22. x86プラットフォームとx64プラットフォームの両方でプロジェクトのターゲットを構築する
- 23. bcc32でbcc32cで構築された静的なライブラリを使用する方法
- 24. 他のライブラリを使用する静的Cライブラリをリンクする方法
- 25. QtプロジェクトでOpenCVと静的にリンクする方法
- 26. CMakeでソースを再コンパイルせずに共有ライブラリと静的ライブラリを構築する方法
- 27. Visual Studio 2010で静的ライブラリをプロジェクトにリンクする
- 28. OpenCVを静的ライブラリとして構築する
- 29. は適切C数学ライブラリと静的ライブラリをリンク
- 30. 静的ライブラリ、Windowsプラットフォーム上の静的ライブラリについて
[静的ライブラリの作成](http://stackoverflow.com/questions/5947067/how-to-create-a-static-library-with-g)と[静的ライブラリの作成と使用](詳細な手順についてはhttp://codingfreak.blogspot.com/2010/01/creating-and-using-static-libraries-in.htmlを参照してください。 Googleでまず質問をする前に習慣をつけてください。 –
'ar(1)'で '.a'アーカイブに入れ、' ranlib(1) 'を実行してください。 'ranlib(1)'はlinuxでは必要ではありませんが、とにかくそれを行うには良い使用法です。 'lib' * *' .a'というライブラリを呼び出して適切なディレクトリに置くと、 '-l' * *パラメータでコンパイラを呼び出すことができます。 –