/ Chyba pri kompilácii výstupu Cython s GCC - python, gcc, cython

Chyba pri kompilácii výstupu Cython s GCC - python, gcc, cython

Snažím sa zostaviť súbor Cython3 do spustiteľného súboru pomocou GCC. Momentálne som stále prilepený jednoduchým svetom "ahoj":

# -*- coding: utf-8 -*-
if __name__ == "__main__":
print("Hello World !")

Tu je príkaz, ktorý som sa pokúsil spustiť za účelom zostavenia tohto jednoduchého programu:

cython3 test.pyx
gcc -I/usr/include/python3.4 test.c

Prvý príkaz beží správne, ale tu je to, čo dostávam keď napíšem druhý:

cython.c:422:14: error: conflicting types for ‘PyTypeObject’
typedef void PyTypeObject;
^
In file included from /usr/include/python3.4/pytime.h:6:0,
from /usr/include/python3.4/Python.h:65,
from cython.c:16:
/usr/include/python3.4/object.h:422:3: note: previous declaration of ‘PyTypeObject’ was here
} PyTypeObject;
^
cython.c: In function ‘__Pyx_PyObject_GetAttrStr’:
cython.c:488:18: warning: dereferencing ‘void *’ pointer
if (likely(tp->tp_getattro))
^
cython.c:399:43: note: in definition of macro ‘likely’
#define likely(x)   __builtin_expect(!!(x), 1)
^
cython.c:488:18: error: request for member ‘tp_getattro’ in something not a structure or union
if (likely(tp->tp_getattro))
^
cython.c:399:43: note: in definition of macro ‘likely’
#define likely(x)   __builtin_expect(!!(x), 1)
^
cython.c:489:18: warning: dereferencing ‘void *’ pointer
return tp->tp_getattro(obj, attr_name);
^
cython.c:489:18: error: request for member ‘tp_getattro’ in something not a structure or union

Momentálne pracujem na testovaní Debianu a preto mám nasledujúce verzie programu Python a Cython:

Python: 3.4.2-2
Cython: 0.21.1-1

odpovede:

1 pre odpoveď č. 1

Problém vyriešený pomocou nasledujúcich príkazov:

cython3 test.pyx
gcc -I/usr/include/python3.4m test.c -lpython3.4m

0 pre odpoveď č. 2

Pochybujem, že vaša odpoveď rieši problém.

Váš pôvodný problém bol, že bolo povolané rozšírenie cython.pyx (vziať do úvahy tento príspevok).

Nie je však povolené pomenovať váš cython modul "cython", pretože je špeciálnym menom pre Cython a vedie k vytvorenému c-súboru, ktorý sa nedá zostaviť (z akéhokoľvek dôvodu falošný typedef void PyTypeObject; je vložený). Nešťastný cytón neoznáša chybu v tomto prípade.

Premenovanie súboru pyx / príponu z cython.pyx na test.pyx vyriešil problém.