Linux 서버 (Ubuntu 12)의 VirtualBox에서 로컬 개발자 Linux 컴퓨터 (Ubuntu 14.04)에서 빌드 한 C++ 응용 프로그램을 실행해야합니다. 응용 프로그램에 많은 종속성이 있고 해당 서버에 sudo
이 없으므로 sudo apt-get install <libname-dev>
과 같은 작업을 수행 할 수 없습니다.로컬 Linux 컴퓨터에서 Linux 서버로 응용 프로그램 이동
ldd
을 사용하여 서버에없는 lib가 무엇인지 파악합니다. 예를 들어
:
libopenblas.so.0 => not found
liblapack.so.3 => not found
내가 응용 프로그램 근처에 서버에 내 로컬 컴퓨터 /usr/lib/
에서이 libs와 복사보다 손으로 심볼릭 링크를 만들어보다.
파일 복사 :
liblapack.so.3.0
libopenblas.so.0
링크를 만들 :
이liblapack.so.3
libopenblas.so
- 는 이런 종류의 트릭을 수행하는 나쁜 생각, 항상 작동합니까?
- 리눅스 .so 명명 규칙에 대해 궁금합니다.
.so.3.0
,.so.0
등의 의미는 무엇입니까?
이는 버전이며 버전 X에 대한 프로그램을 빌드하고 버전 Y
당신의 트릭은 실제로 나쁜 생각입니다. 힌트는 분명히 작동 할 수도 있고 작동하지 않을 가능성이있는 다른 라이브러리가있는 두 개의 다른 운영 체제입니다. 그래서 운이 좋아질 것입니다 만, 그렇지 않을 수도 있습니다. 실행되는 것처럼 보이더라도 특정 라이브러리 호출의 실행을 기다리는 일시적인 충돌이있을 수 있습니다. 넘버링 시스템에 관해서, 필자는 semver.org에 대한 언급을 보았다. Docker가 적절할 수도 있습니다. –