2012-07-03 25 views
12

Ngay bây giờ tôi biên dịch phần mềm C++ của tôi trên một phiên bản cũ nhất của Linux (SLED 10) bằng cách sử dụng gcc được cung cấp và nó có thể chạy trên hầu hết các phiên bản mới hơn khi chúng có glibc mới hơn. Vấn đề là, gcc cũ không hỗ trợ C++ 11 và tôi thực sự muốn sử dụng các tính năng mới.Tôi có thể nhắm mục tiêu Linux cũ hơn với gcc/clang mới hơn không? C++

Bây giờ tôi có một số ý tưởng, nhưng tôi chắc rằng những người khác có cùng nhu cầu. Điều gì thực sự hiệu quả với bạn?

Ý tưởng:

  1. xây dựng trên một hệ thống mới hơn, liên kết tĩnh để glibc mới hơn. (Không thể, phải không?)
  2. Tạo trên một hệ thống mới hơn, biên dịch và liên kết với một glibc cũ hơn.
  3. Tạo trên một hệ thống cũ hơn bằng cách sử dụng gcc được cập nhật, liên kết với glibc cũ hơn.
  4. Xây dựng trên hệ thống mới hơn, liên kết động đến glibc mới hơn, đặt RPath và cung cấp glibc của chúng tôi với trình cài đặt.

Là phần thưởng, phần mềm của tôi cũng hỗ trợ plugin và có SDK. Tôi thực sự thích rằng khách hàng của tôi có thể biên dịch với các thư viện của tôi mà không gặp rắc rối lớn.

Xin cảm ơn trước. Ý tưởng chào đón, giải pháp đã được chứng minh ưa thích.

Trả lời

2

Tạo bằng gcc mới hơn. Hoặc cài đặt trình biên dịch mới trên máy cũ hoặc comile trên máy tính mới của bạn và cài đặt các thư viện động cần thiết trên máy cũ.

Lưu ý rằng nhiều phiên bản của libc (và cũng libstdC++) được hỗ trợ trên một máy duy nhất kể từ khi họ thường là phiên bản (ví dụ libc.so.5, libc.so.6, vv)

+0

Đây có phải là lựa chọn của tôi 3 ? Sẽ có một liên kết gcc mới hơn chống lại một libc cũ hơn, hay bạn gợi ý tôi liên kết với một libc mới và phân phối nó? – David

+0

Nó có thể gần hơn với tùy chọn của bạn 4. Không phân phối libc hoặc libstdC++, hãy chắc chắn rằng các verstion chính xác được cài đặt trên máy mục tiêu. –

Các vấn đề liên quan