/ / Ako spustiť program C v termináli android-x86? - gcc, android-x86

Ako spustiť program C v termináli Android-x86? - gcc, android-x86

Musím program C, ktorý je zostavený pomocou gccv ubuntu. Chcem spustiť tento spustiteľný súbor v termináli Android. Keď spustím, zobrazuje buď „súbor alebo adresár nebol nájdený“ alebo „nie je spustiteľný: ELF32“. Chcem spustiť kód v termináli Android. Existuje nejaký spôsob alebo príznaky v gcc alebo pomocou iného kompilátora, aby som mohol spustiť svoj kód v Android termináli.?

odpovede:

0 pre odpoveď č. 1

Android nepoužíva rovnaké systémové knižnice ako Ubuntu, takže ich nenájdu.

Existujú dve riešenia:

  1. Skopírujte potrebné knižnice.

    Ak ich môžete umiestniť do rovnakého súborového systémumiesta, ktoré majú v Ubuntu, potom skvelé, inak budete musieť spustiť ld-linux.so ručne a povedať mu, kde nájsť knižnice. Alebo by ste mohli program prepojiť tak, že očakáva nájdenie dynamického linkera a knižníc v môžete tiež použiť chroot, ale to vyžaduje root a musíte nájsť chroot binárny súbor, ktorý funguje.

  2. Použite a statický link.

    Zvyčajne to znamená iba absolvovanie -static do GCC. Získate oveľa väčší binárny súbor, ktorý by mal byť úplne samostatný a bez závislostí. Vyžaduje si, aby boli na vašom počítači k dispozícii statické verzie všetkých vašich knižníc vybudovať Systém. Niektoré funkcie (napríklad vyhľadávanie DNS) vždy očakávajú zdieľanú knižnicu, takže nebudú fungovať týmto spôsobom.

Dokonca aj potom by ste mali očakávať niektoré funkcie systému Linuxnepracovať. V podstate všetko, čo vyžaduje hardvérové ​​funkcie alebo konfiguračné súbory v / etc, bude vyžadovať veľa úsilia. Existujú rôzne projekty, ktoré to už urobili (hľadať „linux chroot android“).

Nie som si istý, čo znamená správa „nie je spustiteľný: ELF32“, ale mali by ste skontrolovať, či vytvárate 32 alebo 64-bitové spustiteľné súbory a ktoré binárne súbory Android používajú (file <whatever> by som ti to mal povedať).