私は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ライブラリに依存するのですか?
さて、あなたの 'caffe_interface'を' libcaffe.so'にリンクしないでください。 – arrowd
そうですね、私は2つをリンクするために何をすべきかを理解しようとしています。 –
ディレクトリパスの代わりに、 'target_link_liraries'呼び出しでそのライブラリへのフルパスを指定してください。 – arrowd