저는 CMake를 사용하여 연구 코드를 개발하여 Ubuntu 시스템에서 C++ 코드의 Makefile을 생성했습니다. 필자는 컴퓨터에서 설정하고 빌드하는 데 관련된 몇 가지 공유 라이브러리에 연결합니다. 특히 하나는 빌드하기가 쉽지 않은 특정 버전의 종속성이 있습니다. 일부는 라이브러리의 사용자 정의 빌드입니다 (버그 수정).CMake 종속 공유 라이브러리가있는 Ubuntu에서 RedHat EL6 용 독립 실행 파일을 빌드하십시오.
CLR을 사용하는 Windows 환경에 익숙하지만 바이너리를 빌드하고 모든 공유 라이브러리를 함께 포함시켜야합니다. 다행스럽게도 다른 환경의 링커 (redhat EL6)는 런타임에 이러한 공유 객체를 사용할 수 있기를 바랍니다.
링커가 응용 프로그램 경로를 조사하지 않기 때문에 공유 라이브러리를 찾기 위해 사용자 특정 라이브러리 경로로 가져와야한다고 가정합니다.
Cmake (아마도 Cpack)를 사용하여 바이너리를 빌드하고 다른 머신을 위해 공유 된 모든 오브젝트를 '패키지'하는 좋은 방법이 있습니까? 그럼 (수동으로하더라도) 내 사용자에 대해서만 공유 라이브러리를 설치하고 바이너리를 실행할 수 있습니다.
정적 라이브러리를 사용하지 않는 것이 좋을 것 같습니다. 과거에는 이러한 종속성에 많은 문제가있었습니다.
나는 리눅스 멍청한 놈, 그래서 내 문제가 더 나은 방법을 이해의 부족에 있다면 나는 모든 귀 :
프로젝트의 일부, 또는와 충돌 할 수 공유 라이브러리의 표준이 아닌 버전입니다 이러한 공유 라이브러리 위치 :
여기에 완성도 연결된 유사하지만 동일하지 않은 문제에 대해 이야기 내 이전 답이다 설치된 라이브러리? –
은 대부분 boost와 같은 공통 패키지의 공유 라이브러리이지만, 특히 프로젝트의 dev 브랜치 (fenics-project)에 대한 커스터마이징 빌드입니다. 소스에서 프로젝트를 빌드하는 것은 종속성을 추적하고 트리니너와 같은 빌드에 악몽입니다. 목적지가 공유 환경이기 때문에 그 경로를 피하고 싶습니다. Redhat EL6으로 VM을 설정하고 거기에 빌드해야 할 필요가 있다고 생각합니다. 그런 다음 공유 라이브러리를 내 사용자 경로 (수동)에 복사하십시오. – ccook