2012-07-11 23 views
5

Udało mi się skompilować program (w tym SDL) na moim komputerze (Ubuntu 12) i a.out działa dobrze!działa a.out na innym komputerze

Teraz, jeśli wyślę a.out do przyjaciela, to po prostu nie działa. (podaje prosty komunikat o błędzie ("Can't be run..") lub coś takiego) Ale jeśli ponownie skompiluję odpowiedni plik źródłowy na moim komputerze znajomych, to działa!

Jak mogę spakować/skompilować/ustawić program tak, aby działał na innym komputerze?

+2

Prawdopodobnie nie ma kompatybilnych wersji bibliotek - SDL, glibc, może nawet libstdC++. Jakie masz wersje i jakie masz wersje? Możesz być w stanie odłączyć statycznie linkowanie pliku binarnego, w przeciwnym razie będziesz musiał skompilować minimalną wersję biblioteki, którą chcesz obsłużyć. – Rup

+0

Może trzeba zrobić chmod na exe, ale odpowiedź poniżej dotyczy i jest droga naprzód proponuję – mathematician1975

+9

To dobre pytanie. Przez czterdzieści lat nikt nie wymyślił prostej odpowiedzi. –

Odpowiedz

5

Pliki wykonywalne często są specyficzne dla środowiska/maszyny, na której zostały utworzone. Nawet jeśli zaangażowany jest ten sam procesor/sprzęt, mogą istnieć zależności od bibliotek, które mogą uniemożliwiać uruchamianie plików wykonywalnych na innych komputerach.

Czy możesz po prostu wysłać kod źródłowy z instrukcjami kompilacji? Zakładając, że nie ma NDA lub innych problemów uniemożliwiających to podejście (sugeruję tylko, że skoro wspomniałeś, że to działało dla ciebie)

Oczywiście, w końcu możliwe jest, po tym wszystkim, w jaki sposób dystrybuowane są pliki binarne, ale będą starannie skonstruowane i będą miały statycznie połączone biblioteki (tj. wszystko jest częścią pliku wykonywalnego).

+0

Nie mam tu teraz źródła, ale ten fragment powinien mieć ten sam efekt: http://lazyfoo.net/SDL_tutorials/lesson01/linux/cli/index.php – user1511417

+0

Myślę, że problemem jest SDL .. dunno – user1511417

+0

@ user1511417 prawdopodobnie nie jestem tego zaznajomiony. Ale nie jest to rzadki problem/dylemat (oprogramowanie rozpowszechniające), którego doświadczyłeś. – Levon

0

zapytać znajomego, aby wykonać następujące czynności:

chmod +x a.out 
ldd a.out 

co widzi? Zakładam oczywiście, że te dwa środowiska są w dużej mierze podobne (np. Oba uruchamiają Ubuntu itp.).

+0

Poważnie myślę, że tego właśnie potrzebuje. Poza tym dystrybucja plików binarnych, gdy źródło jest dostępne, jest czymś, czego powinieneś unikać, jeśli możesz. (Chyba nie ma tu miejsca NDA). – Aftnix

Powiązane problemy