/ / krížová kompilácia gdb pre ruku s pytónom zlyhala - python, linux, android-ndk, cross-compiling

krížová kompilácia gdb pre ruku s pythonom zlyhala - python, linux, android-ndk, cross-compiling

Chcem debugovať aplikáciu ARM na zariadeniach, ako je napríklad systém Android, radšej používam gdb (verziu ARM) ako gdb s gdbserver na ladenie, pretože existuje prístrojová doska , vizuálne rozhranie pre GDB v Pythone.

Musí spolupracovať s gdb (verzia ARM) na zariadeniach, takže musím prekročiť kompiláciu ARM verzie gdb s pythonom, príkaz sa používa nižšie:

./configure --host=arm-linux-gnueabi --target=arm-linux-gnueabi --with-python=/usr/bin

Ale nakoniec sa objavilo chybové hlásenie:

configure:8096: checking whether to use python
configure:8098: result: /usr/bin/
configure:8316: checking for python2.7
configure:8334: arm-linux-gnueabi-gcc -o conftest -g -O2   -I/usr/include/python2.7 -I/usr/include/python2.7   conftest.c -ldl -ltermcap -lm    -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions >&5
In file included from /usr/include/python2.7/Python.h:8:0,
from conftest.c:50:
/usr/include/python2.7/pyconfig.h:15:52: fatal error: arm-linux-gnueabi/python2.7/pyconfig.h: No such file or directory
compilation terminated.

Potom nájdem riadok 15 v /usr/include/python2.7/pyconfig.h, ako je uvedené nižšie:

# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP)
#include <arm-linux-gnueabi/python2.7/pyconfig.h>

Tu je bod, len to mám x86_64-linux-gnu/python2.7/pyconfig.h v /usr/include, ako môžem dostať arm-linux-gnueabi/python2.7/pyconfig.h? Už sa mi to podarí nainštalovať python2.7-dev.

odpovede:

10 pre odpoveď č. 1

Keď sa pokúšam, narazil som na tento problémskompilujte modul pytónového obalu, ktorý je postavený na SWIG, ale zdá sa, že sa to stane každému, kto si skompiluje kód C v systéme Debian.

Zdá sa, že balíky Debian python-dev nie súnastaviť s hlavičkovými súbormi na uľahčenie krížovej kompilácie, ale je možné ísť manuálne. Nie som si istý, či ide o chybu typu python alebo balíčkovú chybu v balíku Debian, a nebudem skúmaný, či sa vzťahuje na iné distribúcie.

pyconfig.h nastaví preprocesor, aby určil zdrojový kód pythonu, ktorý sa týka závislostí od platformy, ako je endianness a veľkosti dátových typov, takže správne pyconfig.h je určite potrebné na správnu kompiláciu zdroja pythonu. Našťastie by mal byť súbor pyconfig.h jediným súborom, ktorý potrebujete odchytiť samostatne a je dostupný z balíka Debian python-dev pre vašu cieľovú platformu.

môžete prevziať balík súborov pre armeabi alebo akúkoľvek inú architektúru https://packages.debian.org/jessie/libpython2.7-dev a extrahujte samotný adresár sami alebo použite nasledovné príkazy na stiahnutie balíka a skopírujte správne súbory pre armeabi do / usr / local / include

wget http://http.us.debian.org/debian/pool/main/p/python2.7/libpython2.7-dev_2.7.9-2_armel.deb
dpkg -x libpython2.7-dev_2.7.9-2_armel.deb libpython2.7-dev_2.7.9-2_armel_extracted
sudo cp -r libpython2.7-dev_2.7.9-2_armel_extracted/usr/include/arm-linux-gnueabi/ /usr/local/include/
rm -r libpython2.7-dev_2.7.9-2_armel*

Všimnite si, že na niektorých krížových kompilátorov budete musieť pridať -I /usr/local/include na možnosti kompilátora, ak v predvolenom nastavení nevyhľadáva toto miesto, ale pre mňa je to lepšie ako zmena / usr / include a riziko, že vaše zmeny budú vymazané operačným systémom