2017-02-16 11 views
1

Я хочу установить библиотеку yaml-cpp.Установка библиотеки в докере

Чтобы установить на Ubuntu (на моем компьютере) я обычно клонируют его от github и выполните следующие действия:

cmake cmake [-G generator] [-DBUILD_SHARED_LIBS=ON|OFF] .. 
make 
make install 

И это прекрасно работает.

Я делаю то же самое в Докер. Тогда я начинаю MyProject и связать его с yaml-cpp библиотеки в CMakeLists.txt (target_link_libraries(MyProject yaml-cpp))

Но у меня есть ошибки, когда я пытаюсь запустить в исполняемом файле:

./MyProject: error while loading shared libraries: libyaml-cpp.so.0.5: cannot open shared object file: No such file or directory 

UPD

Мой Dockerfile является :

FROM ubuntu:16.04 
RUN apt-get update && apt-get install -y \ 
      sudo \ 
      git \ 
      build-essential \ 
      cmake \ 
      libboost-dev \ 
      libboost-all-dev \ 
      doxygen \ 
         unzip \ 
      python3 \ 
         wget 

## Install SimGrid 

RUN git clone https://github.com/simgrid/simgrid.git 
WORKDIR "/simgrid" 
RUN cmake -Denable_documentation=OFF -Denable_coverage=OFF -Denable_java=OFF -Denable_model-checking=OFF \ 
    -Denable_lua=OFF -Denable_compile_optimizations=OFF -Denable_smpi=OFF -Denable_smpi_MPICH3_testsuite=OFF -Denable_compile_warnings=OFF . 
RUN sudo sync; sudo make; sudo make install; 
RUN cd lib && sudo cp * /usr/lib; cd ../include && sudo cp -a * /usr/include 

## Install yaml-cpp parser 

RUN git clone https://github.com/jbeder/yaml-cpp.git 
WORKDIR "/yaml-cpp" 
RUN mkdir build && cd build && cmake -DBUILD_SHARED_LIBS=ON .. && cd .. && make && make install 

# LHCb grid simulation project 
WORKDIR "/" 
RUN git clone https://github.com/skygrid/grid_simulation.git 
WORKDIR "/grid_simulation" 
RUN sudo sysctl -w vm.max_map_count=500000 
CMD ["./run.sh"] 
+0

Дополнительная информация о вашем файле docker будет отличной – clue404

+0

опубликовать файл Dockerfile, чтобы мы могли видеть, как вы строите это изображение. – gbolo

+0

@ ro0kie4 @gbolo Я добавил 'Dockerfile' –

ответ

0

У меня был simil ar с моей собственной общей библиотекой внутри контейнера докеров. По какой-то причине мое приложение не могло найти библиотеку, хотя я поместил ее в каталог/usr/local/lib /. В хост-машине все работало нормально.

Magical, app начал работать после выполнения команды cli внутри контейнера докера, который просто находит пути поиска ldd: ldconfig -v | grep -v^$ '\ t'.