2017-01-03 14 views
0

centos 6.7 plateform에 배포되고 배포판의 기본 C++ 컴파일러 (gcc 4.4.7)로 작성된 응용 프로그램이 있습니다. 이제 Qt 5.7로 업그레이드하는 몇 가지 이유 때문에, C++ 11 기능이 완벽하게 지원되는 최신 컴파일러를 사용해야합니다. devtoolset-2의 gcc 4.8.2를 가정 해 봅시다. 또 다른 가능성은 소스에서 gcc의 새 버전을 빌드하는 것이 었습니다. https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html에 따르면 4.8.3 (그러나 4.8.2는 언급되지 않음) gcc 버전은 libstdC++. 6.0.13 (centos 6.7의 기본 C++ lib)과 역 호환됩니다.업그레이드 된 컴파일러로 빌드 된 응용 프로그램을 안전하게 배포하는 방법

이 새로운 gcc 4.8.2 버전으로 응용 프로그램을 다시 컴파일했고 모든 것이 dev 환경에서 잘 돌아가는 것 같습니다. 앱은 기본 시스템 인 C++, gcc 및 c libs를 사용합니다.

그러나 centos 6.7 (예를 들어 새로 설치 한 후)에 배포 할 때 나는 그렇게하는 것이 얼마나 안전하다고 생각하십니까? ABI 호환성에 의존하는 대신 내 앱을 빌드하는 데 사용 된 gcc 버전과 호환되는 최신 C++ 및 C 라이브러리를 제공하는 것이 더 낫겠습니까?

+1

중복 가능 :) http://stackoverflow.com/questions/15599714/risks-of-different-gcc-versions-at-link-run-time – AMA

+0

감사합니다. 실제로 조용합니다. – Scab

답변

0

다른 사람이이 일을하고있는 것을 뵙게되어 반가워요. 나는 최근에 그렇게하기 시작했습니다.

내 대답은별로 권위가 있지만, 가치가있는 부분에 대해서는 링크 할 모든 C++ 라이브러리를 다시 작성하고이를 내 응용 프로그램과 함께 배포합니다. 또한 libstdC++와 libgcc_s를 재배포하여 특별한 장소 (/usr/lib/myApplicationName/...)에 넣습니다. 내 응용 프로그램이 네이티브 라이브러리가 아닌 모든 재배포 라이브러리에 연결되도록합니다.

libc 호환성이 문제가 될 수 있다는 우려가 있었지만 C 라이브러리 나 libc 자체에 대해 아무 것도 할 필요가 없다는 것을 알았습니다.

업데이트 : 번들 I didn't even need to do this, because I'm using devtoolset; FML.