2012-07-11 11 views
5

He compilado con éxito un programa (incluyendo SDL) en mi computadora (Ubuntu 12) y el a.out funciona muy bien!ejecutando a.out en otra computadora

Ahora, si envío el a.out a un amigo, simplemente no funciona. (da un mensaje de error simple ("Can't be run..") o algo) Pero si compilo el archivo fuente correspondiente en la computadora de mis amigos otra vez, ¡funciona!

¿Cómo debo empacar/compilar/hacer mi programa para que pueda ejecutarse en otra computadora?

+2

Probablemente no tenga versiones compatibles de las bibliotecas - SDL, glibc, tal vez incluso libstdC++. ¿Qué versiones tienes y qué versiones tiene? Puede escaparse estáticamente vinculando su binario, de lo contrario tendrá que compilar para la versión de biblioteca mínima que le gustaría admitir. – Rup

+0

Podría ser necesario hacer un chmod en el exe pero se aplica la siguiente respuesta y es el camino a seguir, sugeriría – mathematician1975

+9

. Esa es una buena pregunta. En cuarenta años, nadie ha encontrado una respuesta simple. –

Respuesta

5

Los ejecutables suelen ser específicos del entorno/máquina en el que se crearon. Incluso si se trata del mismo procesador/hardware, puede haber dependencias en las bibliotecas que impidan que los ejecutables se ejecuten en otras máquinas.

¿Puede simplemente enviar el código fuente con instrucciones para compilar? Suponiendo que no hay acuerdo de confidencialidad u otros problemas que impiden que el enfoque (yo sólo sugiero que ya que ha mencionado esta trabajado para usted)

Por supuesto, al final es posible, después de todo lo que es como se distribuyen los binarios, pero será cuidadosamente construido y tendrá bibliotecas vinculadas estáticamente (es decir, todo es parte del ejecutable).

+0

No tengo la fuente aquí ahora, pero este fragmento aquí debería tener el mismo efecto: http://lazyfoo.net/SDL_tutorials/lesson01/linux/cli/index.php – user1511417

+0

Creo que SDL es el problema .. no sé – user1511417

+0

@ user1511417 probablemente, no estoy familiarizado con esto desafortunadamente. Pero este no es un problema/dilema (software de distribución) poco común que haya experimentado. – Levon

0

pedirle a su amigo para hacer lo siguiente:

chmod +x a.out 
ldd a.out 

¿Qué ve? Supongo, por supuesto, que los dos entornos son en gran medida similares (por ejemplo, ambos ejecutan Ubuntu, etc.)

+0

Creo seriamente, esto es lo que él necesita. Además, distribuir binarios cuando la fuente está disponible es algo que deberías evitar si puedes (supongo que no hay NDA involucrado aquí). – Aftnix

Cuestiones relacionadas