我正在尝试使用一个简单的 C 文件来扩展 python。我成功创建了自己的 python 模块,但我还需要 C 文件本身来编译并作为独立的可执行文件运行。我可以成功编译它,但是当我尝试运行它时,我收到错误“无法执行二进制文件:执行格式错误”。
这是我的 C 源文件(hellomodule.c):
#include <Python.h>
void print_hello(const char* name){
printf("Hello %s!\n", name);
}
//Only used by Python
static PyObject*
say_hello(PyObject* self, PyObject* args)
{
const char* name;
if (!PyArg_ParseTuple(args, "s", &name))
return NULL;
//printf("Hello %s!\n", name);
print_hello("World");
Py_RETURN_NONE;
}
//Only used by Python
static PyMethodDef HelloMethods[] =
{
{"say_hello", say_hello, METH_VARARGS, "Greet somebody."},
{NULL, NULL, 0, NULL}
};
//Only used by Python
PyMODINIT_FUNC
inithello(void)
{
(void) Py_InitModule("hello", HelloMethods);
}
int main(){
print_hello("World");
}
我可以使用以下内容“成功”编译它而不会出现任何错误或警告:
gcc -I /usr/include/python2.7 -c hellomodule.c -o hellomodule
使“hellomodule”文件可执行后,我运行它并得到错误:
-bash: ./hellomodule: cannot execute binary file: Exec format error
为什么会导致这样的错误?