Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Bash, Python: Cython-ohjelma ei käänny

Jaska [12.08.2017 13:08:35]

#

Yritin ratkoa putkapostia piinkova salasana. Sain sen toimimaan python3:lla ja pypyllä. Mutta kun koetin kääntää sen cythonilla C:ksi ja siitä gcc:llä ajettavan tiedoston Linuxille, ei käännös onnistunutkaan. Miten saan tuon käännöksen tehtyä?

# -*- coding: utf-8 -*-
print("moi")

(Mod. huom: ei tarpeetonta pitkää rot13-koodia, kiitos!)

jaakko@jaakko-Aspire-E1-572:~/Desktop/Kaikki/Programming$ cython piinkova.py
jaakko@jaakko-Aspire-E1-572:~/Desktop/Kaikki/Programming$ gcc piinkova.c
piinkova.c:4:20: fatal error: Python.h: No such file or directory
compilation terminated.

Metabolix [12.08.2017 14:24:05]

#

Kuten virheilmoituksesta selvästi käy ilmi, sinulta puuttuu Python.h, tai siis et ole kertonut kääntäjälle polkua kyseiseen tiedostoon. Dokumentaation mukaan gcc:lle pitää antaa oikean Python-version mukainen polku, esimerkiksi -I/usr/include/python3.6m varmaankin, ja vastaavasti täytyy myös linkittää Python, esimerkiksi -lpython3.6m. Lisäksi ohjelmasta puuttuu main-funktio, koska Cythonilla tehdään yleensä kirjastoja. Jotta ohjelmaan tulisi main-funktio, tarvitaan cythonille parametri --embed.

echo "print('moi')" > a.py
cython a.py -o a.c --embed
gcc a.c -o a.out -I/usr/include/python3.6m -lpython3.6m
./a.out
# -> tulostaa moi

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta