Ich möchte aus einem Python-Programm heraus ein eigenes c-Programm aufrufen. Als Anleitung verwende ich dieses: http://docs.python.org/extending/ , aber es klappt noch nicht ganz.
Die Namen hab ich leicht modifiziert; ich stelle mir vor:
>>> import mysys >>> status = mysys.cmd("ls -l")
... jetzt sollte eine Dateienliste gezeigt werden (wenns fertig wäre).
Der c-Modul sieht so aus (alles etwas verkürzt):
#include <Python.h> static PyObject * mysys_cmd(PyObject *self, PyObject *args) { const char *command; int sts; if (!PyArg_ParseTuple(args, "s", &command)) return NULL; sts = system(command); return Py_BuildValue("i", sts); }
Kompilieren tue ich so: gcc -Wall -I /usr/include/python2.6 mysys.c -o mysys_cmd
Leider findet er Grund zum Meckern, nämlich so:
mysys.c:22: Warnung: »mysys_cmd« definiert, aber nicht verwendet /usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start': /build/buildd/glibc-2.9/csu/../sysdeps/x86_64/elf/start.S:109: undefined reference to `main' /tmp/ccirbVFi.o: In function `mysys_cmd': mysys.c:(.text+0x23): undefined reference to `PyArg_ParseTuple' mysys.c:(.text+0x4f): undefined reference to `Py_BuildValue' collect2: ld gab 1 als Ende-Status zurück
Kann mir jemand auf die Sprünge helfen?