2017-08-22 21 views
0

私はcaffeの.soファイルを作成しようとしています(Javaでロードされるようになっています)。私は、この.cppファイルを(多かれ少なかれ)作成:私のCMakeLists.txtはこのようになります.soファイルは、コンパイルされたライブラリを「見る」ことができません

#include "caffe/caffe.hpp" 
#include "caffe/layers/data_layer.hpp" 
using namespace caffe; 
using boost::shared_ptr; 

class MinimalClassifier 
{ 
    public: 
    MinimalClassifier(const char* deploy_path, const char* model_path); 
    MinimalClassifier(const char* deploy_path, void* data, int size); 
    ~MinimalClassifier(); 
    float* classify(float* input); 
    int input_size(); 
    int output_size(); 
    bool gpu_active() { return _gpu; } 
    void prepocdefs(); 
} 

cmake_minimum_required(VERSION 3.6) 
project(caffe_interface) 
set(CMAKE_CXX_STANDARD 11) 
set(CMAKE_BUILD_TYPE Release) 
find_package(CUDA REQUIRED) 
include_directories(/home/ubuntu/caffe3/caffe/cmake_build/install/include/ ${CUDA_INCLUDE_DIRS}) 
set(SOURCE_FILES caffe_interface.cpp) 
add_library(caffe_interface SHARED ${SOURCE_FILES}) 
target_link_libraries(caffe_interface /home/ubuntu/caffe3/caffe/cmake_build/lib ${CUDA_LIBS}) 

私はすべてのカフェが含まれていlibcaffe.so.1.0.0-rc3という名前のカフェライブラリを(作る使用して)作成しましたファイル。 私はCMakeListsにtarget_link_librariesの.osファイルとcaffeライブラリを接続しました。

私の.soファイルをリンクして、私が作成したそのcaffeライブラリに依存したいということです。しかし、もし私がldd caffe_interface.soをすれば、カフェ・リボンはそこに依存関係に現れないので、それは後に私のように行動しません。 どうすればcaffe_interfaceがcaffeライブラリに依存するのですか?

+0

さて、あなたの 'caffe_interface'を' libcaffe.so'にリンクしないでください。 – arrowd

+0

そうですね、私は2つをリンクするために何をすべきかを理解しようとしています。 –

+1

ディレクトリパスの代わりに、 'target_link_liraries'呼び出しでそのライブラリへのフルパスを指定してください。 – arrowd

答えて

0

私はそれを理解しました。 arrowdが示唆するように正確なファイルを指定する必要がありますが、*.so.1.0.0ファイルではなく、*.so.1.0.0ファイルへのリンクである*.soファイルである必要があります。 それだけです。

関連する問題