2016-09-27 17 views
0

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 
  1. 는 이런 종류의 트릭을 수행하는 나쁜 생각, 항상 작동합니까?
  2. 리눅스 .so 명명 규칙에 대해 궁금합니다. .so.3.0, .so.0 등의 의미는 무엇입니까?
+0

이는 버전이며 버전 X에 대한 프로그램을 빌드하고 버전 Y

+0

당신의 트릭은 실제로 나쁜 생각입니다. 힌트는 분명히 작동 할 수도 있고 작동하지 않을 가능성이있는 다른 라이브러리가있는 두 개의 다른 운영 체제입니다. 그래서 운이 좋아질 것입니다 만, 그렇지 않을 수도 있습니다. 실행되는 것처럼 보이더라도 특정 라이브러리 호출의 실행을 기다리는 일시적인 충돌이있을 수 있습니다. 넘버링 시스템에 관해서, 필자는 semver.org에 대한 언급을 보았다. Docker가 적절할 수도 있습니다. –

답변

1

다른 Ubuntu 12에서 다시 컴파일하고 누락 된 lib를 정적으로 연결하십시오. 예 :

+0

'sudo apt-get install'을 할 수 없다면 Server Linux 용 정적 라이브러리를 얻는 올바른 방법은 무엇입니까? – mrgloom