2012-07-03 18 views
12

Ahora compilo mi software C++ en una cierta versión anterior de linux (SLED 10) usando el gcc proporcionado y puede ejecutarse en la mayoría de las versiones más nuevas ya que tienen un glibc más nuevo. El problema es que el viejo gcc no es compatible con C++ 11 y realmente me gustaría usar las nuevas características.¿Puedo orientarme a Linux antiguo con gcc/clang más nuevo? C++

Ahora tengo algunas ideas, pero estoy seguro de que otras tienen la misma necesidad. Lo que realmente funcionó para ti?

Ideas:

  1. construcción en el sistema más reciente, de enlace estática a nuevos glibc. (No es posible, ¿no?)
  2. Construya sobre un sistema más nuevo, compile y vincule con un glibc antiguo.
  3. Construya sobre un sistema anterior usando un gcc actualizado, enlace contra un glibc antiguo.
  4. Construya en un sistema más nuevo, enlace dinámico a glibc más nuevo, configure RPath y proporcione nuestro glibc con instalador.

Como beneficio adicional, mi software también admite complementos y tiene un SDK. Realmente preferiría que mis clientes compilaran contra mis bibliotecas sin una gran molestia.

Gracias de antemano. Ideas bienvenidas, soluciones probadas preferidas.

Respuesta

2

Construya con el gcc más reciente. Instale el nuevo compilador en la máquina antigua o comile en su nueva máquina e instale las bibliotecas dinámicas necesarias en la máquina anterior.

Tenga en cuenta que varias versiones de libc (y también libstdC++) están soportados en una sola máquina ya que normalmente con versiones (es decir libc.so.5, libc.so.6, etc)

+0

Es este mi opción 3 ? ¿Un enlace gcc más nuevo contra una libc más antigua, o estás sugiriendo que enlace contra una nueva libc y lo distribuya? – David

+0

Probablemente esté más cerca de su opción 4. No distribuya libc o libstdC++, asegúrese de que las versiones correctas estén instaladas en la máquina de destino. –

Cuestiones relacionadas