我在编译嵌入Python的C程序就遇到过无法找到头文件,以及链接程序的错误,这里为了简化,采用了Python 2.7官方文档的样例:
#include <Python.h>
int
main(int argc, char *argv[])
{
Py_SetProgramName(argv[0]); /* optional but recommended */
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
Py_Finalize();
return 0;
}
CPPFLAGS=-I/usr/include/python2.7
LDFLAGS=-L/usr/lib/python2.7
C_INCLUDE_PATH=/usr/include/python2.7
export C_INCLUDE_PATH
LD_LIBRARY_PATH=/usr/lib/python2.7
export LD_LIBRARY_PATH
#include <python2.7/Python.h>
/cn_nfs/libvirt-kvm/src/qemu/``qemu_driver.cqemuDomainMigratePrepare3Params:13991: undefined reference to `Py_Initialized'
/cn_nfs/qemuDomainMigratePrepare3Paramslibvirt'-kvm/src/qemu/qemu_driver.c:13992: undefined reference 'to: `Py_IsInitialized'
/cn_nfs/libvirt-kvm/src/qemu/:
qemu_driver.c:13999: undefined reference to `Py_Finalize'
//cn_nfs/libvirt-kvm/src/qemu/cn_nfsqemu_driver.c/:13991libvirt:-kvm/src/qemu /qemu_driver.c:13991undefined: undefined reference to `referencePy_Initializedcollect2: error: ld returned 1 exit status
$ gcc test.c -o test -lpython2.5 -lm -L/usr/lib/python2.5/config/ -I/usr/include/python2.5/
$ ./test
Today is Thu Nov 20 01:05:17 2008
LDFLAGS="-Wl,--as-needed" \
PYTHON=/usr/bin/python
LDFLAGS="-Wl,--as-needed -lpython2.7" \
PYTHON=/usr/bin/python
#include <Python.h>
int
main(int argc, char *argv[])
{
Py_SetProgramName(argv[0]); /* optional but recommended */
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
Py_Finalize();
return 0;
}