2017-02-16 3 views
1

yaml-cpp 라이브러리를 설치하고 싶습니다. 도커에 라이브러리 설치

내가 보통 github에서 그것을 복제 (내 PC에) 우분투에 설치하고 다음 단계를 수행합니다

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

을 그리고 그것을 잘 작동합니다.

나는 Docker에서 동일한 단계를 수행합니다. 그럼 난 MyProject를 시작하고 CMakeLists.txt (target_link_libraries(MyProject yaml-cpp))

yaml-cpp 라이브러리와 그것을 연결하지만 실행 파일에 실행하려고 할 때 오류가 있습니다

Dockerfile

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

UPD :

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

dockerfile에 대한 더 많은 정보는 – clue404

+0

입니다. Dockerfile을 게시하면이 이미지를 어떻게 작성하고 있는지 알 수 있습니다. – gbolo

+0

@ ro0kie4 @gbolo 'Dockerfile'을 추가했습니다. –

답변

0

나는 simil을 가지고 있었다. 도커 컨테이너 내에서 내 자신의 공유 라이브러리와 함께 ar 문제. 비록 내가/usr/local/lib/디렉토리에 넣었을지라도 어떤 이유로 애플 리케이션이 라이브러리를 찾지 못했습니다. 호스트 컴퓨터에서 모든 것이 정상적으로 작동했습니다.

마침내 ldd 검색 경로를 찾는 docker 컨테이너에서 cli 명령을 실행 한 후 응용 프로그램이 작동하기 시작했습니다. ldconfig -v | grep -v^$ '\ t'.