对 python-dev header 中函数的未定义引用
Reference undefined to functions in python-dev header
我正在尝试将一些 Python 代码嵌入到 C 中;第一次做这种事
这是我第一次尝试的简单代码,是网上的一个指南复制的:
#include <Python.h>
void exec_pycode(const char* code)
{
Py_Initialize();
PyRun_SimpleString(code);
Py_Finalize();
}
int main(int argc, char **argv) {
exec_pycode(argv[1]);
return 0;
}
所以我安装了 python3.4-dev 包。
然后为了获得我键入的链接器的信息:
pkg-config --cflags --libs python3
然后我尝试编译我的代码:
gcc -std=c99 -o main -I /usr/local/include/python3.4m -L /usr/local/lib -lpython3.4m main.c
(按照之前的命令)
但这是结果:
/tmp/ccJFmdcr.o: in function "exec_pycode":
main.c:(.text+0xd): reference undefined to "Py_Initialize"
main.c:(.text+0x1e): reference undefined to "PyRun_SimpleStringFlags"
main.c:(.text+0x23): reference undefined to "Py_Finalize"
collect2: error: ld returned 1 exit status
链接阶段似乎有问题,但我无法理解问题出在哪里,因为我已经将 header 和库的确切路径传递给了链接器.我该如何解决这个问题?
尝试重新排序您的编译命令,以便在您的 C 源文件之后指定所有链接选项:
gcc -std=c99 -o main -I /usr/local/include/python3.4m main.c \
-L /usr/local/lib -lpython3.4m
我正在尝试将一些 Python 代码嵌入到 C 中;第一次做这种事
这是我第一次尝试的简单代码,是网上的一个指南复制的:
#include <Python.h>
void exec_pycode(const char* code)
{
Py_Initialize();
PyRun_SimpleString(code);
Py_Finalize();
}
int main(int argc, char **argv) {
exec_pycode(argv[1]);
return 0;
}
所以我安装了 python3.4-dev 包。
然后为了获得我键入的链接器的信息:
pkg-config --cflags --libs python3
然后我尝试编译我的代码:
gcc -std=c99 -o main -I /usr/local/include/python3.4m -L /usr/local/lib -lpython3.4m main.c
(按照之前的命令)
但这是结果:
/tmp/ccJFmdcr.o: in function "exec_pycode":
main.c:(.text+0xd): reference undefined to "Py_Initialize"
main.c:(.text+0x1e): reference undefined to "PyRun_SimpleStringFlags"
main.c:(.text+0x23): reference undefined to "Py_Finalize"
collect2: error: ld returned 1 exit status
链接阶段似乎有问题,但我无法理解问题出在哪里,因为我已经将 header 和库的确切路径传递给了链接器.我该如何解决这个问题?
尝试重新排序您的编译命令,以便在您的 C 源文件之后指定所有链接选项:
gcc -std=c99 -o main -I /usr/local/include/python3.4m main.c \
-L /usr/local/lib -lpython3.4m