/ / Jak uruchomić program C w terminalu Android-x86? - gcc, android-x86

Jak uruchomić program C w terminalu android-x86? - gcc, android-x86

Mam do C program, który jest kompilowany za pomocą gccw ubuntu. Chcę uruchomić ten plik wykonywalny w terminalu Android. Po uruchomieniu wyświetla się komunikat „nie znaleziono pliku lub katalogu” lub „plik wykonywalny: ELF32”. Chcę uruchomić kod w terminalu Android. Czy jest jakiś sposób lub flagi w gcc lub przy użyciu innego kompilatora, aby móc uruchomić mój kod w terminalu Android.?

Odpowiedzi:

0 dla odpowiedzi № 1

Android nie korzysta z tych samych bibliotek systemowych co Ubuntu, więc nie można ich znaleźć.

Istnieją dwa rozwiązania:

  1. Skopiuj potrzebne biblioteki.

    Jeśli możesz umieścić je w tym samym systemie plikówlokalizacje, które mają w Ubuntu, to świetnie, w przeciwnym razie będziesz musiał ręcznie uruchomić ld-linux.so i powiedzieć mu, gdzie znaleźć biblioteki. Lub możesz ponownie połączyć program, aby spodziewał się znaleźć dynamiczny linker i biblioteki w niestandardowe miejsce. Możesz także użyć chroot, ale to wymaga roota i musisz znaleźć binarny chroot, który działa.

  2. Użyć statyczny połączyć.

    Zazwyczaj oznacza to po prostu przejście -static do GCC. Otrzymujesz znacznie większy plik binarny, który powinien być całkowicie samowystarczalny, bez żadnych zależności. Wymaga to, aby statyczne wersje wszystkich bibliotek były dostępne na twoim komputerze budować system. Ponadto niektóre funkcje (takie jak wyszukiwanie DNS) zawsze oczekują udostępnionej biblioteki, więc nie działają w ten sposób.

Nawet wtedy powinieneś spodziewać się niektórych funkcji Linuksanie pracować. Zasadniczo wszystko, co wymaga funkcji sprzętowych lub plików konfiguracyjnych w / etc, będzie wymagało dużego wysiłku. Istnieją różne projekty, które już to zrobiły (wyszukaj „linux chroot android”).

Nie jestem pewien, co oznacza komunikat „niewykonywalny: ELF32”, ale powinieneś sprawdzić, czy budujesz 32 lub 64-bitowe pliki wykonywalne i których plików binarnych z Androidem używasz (file <whatever> powinienem powiedzieć).