2014-06-08 6 views
0

우분투에서 Netbeans를 사용하여 간단한 C++ 응용 프로그램을 만들었습니다. 응용 프로그램에서 mysql_connection과 curl을 사용합니다.libmysqlcppconn.so.5 : 공유 객체 파일을 열 수 없습니다. 해당 파일이나 디렉토리가 없습니다.

error while loading shared libraries: libmysqlcppconn.so.5: cannot open shared object file: No such file or directory. 

가 libmysqlcppconn.so.5 있는지 확인하려고 : 응용 프로그램이

나는이 메시지가 내 CentOS의 서버에서 응용 프로그램을 실행하려고 할 때 내 로컬 시스템 (우분투)에서 잘 작동한다 라이브러리가 서버에 있거나 없으면 다음과 같은 것을 발견했습니다.

REMOTE (Centos) 
**in [/usr/local/lib]** 

libmysqlcppconn-static.a 
[email protected] 
[email protected] 
libmysqlcppconn.so.7.1.1.3* 


LOCAL (Ubuntu) 
**in [/usr/lib]** 

libmysqlcppconn-static.a 
[email protected] 
[email protected] 
libmysqlcppconn.so.5.1.1.0* 

왜 응용 프로그램을 실행할 수 없습니까? 어떻게 해결할 수 있습니까?

답변

2

서버용으로 빌드하고 패키지해야합니다.

응용 프로그램이 사용하는 다른 라이브러리 (호환되지 않는 버전)와 연결되었습니다.

IMHO 가장 자주 실행되는 상자에 그것을 빌드하는 것이 가장 쉽습니다.

+1

나는 그 대답을 좋아하고 그것을 싫어한다. 그저 우분투에서 Netbeans를 사용하고 있으며 프로젝트를 구축하는 데 실제로 모든 것을 수행합니다. 그러나 그것을 끝을 경유하여 centos 위에서하는 것! 방금 시도한 및 "/usr/local/include/cppconn/connection.h:31:29 : 오류 : boost/variant.hpp : 해당 파일 또는 디렉터리"로 시작하는 많은 오류가 발생했습니다. –

+0

필요한 것처럼 보입니다. 서버에 의존성을 설치하십시오. 나는 개인적으로 CMake를 좋아하고 Netbeans와 함께 게임을 잘 할 수 있다고 생각합니다. 어쩌면 당신은 당신의 서버 (커맨드 라인에서)와 좋은 UI에서 작동하는 하나의 프로젝트를 가질 수 있도록 그것을 사용하는 것을 고려해야 할 것입니다. :) – wojciii

+0

내가 cpp 커넥터를 설치했을 때 "cmake. -DBOOST_ROOT : STRING =/boost_1_55_0"을 사용하여 설치가 부스트 디렉토리를 인식하도록했습니다. 내가 뭘 더해야하지. 또는 다른 질문을 시작해야합니까 :) –

1

일반적으로 Linux 시스템에 구축 된 바이너리가 다른 Linux 시스템 (다른 배포판이나 동일한 배포판의 다른 버전)에서 작동한다는 보장은 없습니다. 일부 응용 프로그램의 경우 라이브러리 파일 (lib*.so*)을 복사하거나 정적으로 연결하는 것만으로도 (gcc -static) 일반적으로 여러 Linux 시스템 용 프로그램을 배포하는 것은 쉬운 해결책이 없이는 더 복잡합니다.

하나의 솔루션은 실행하려는 각 시스템에 대해 프로그램을 다시 컴파일하는 것입니다. 이를 위해서는 먼저 해당 시스템에 컴파일러와 라이브러리 종속성 (*-devel 패키지 포함)을 설치해야합니다.