试图编译嵌入Python的C代码时发生链接错误

试图编译嵌入Python的C代码时发生链接错误,python,c,python-3.x,linux,gcc,Python,C,Python 3.x,Linux,Gcc,我正在尝试导入,并在C代码中运行此python函数: import requests import json url = 'http://127.0.0.1:5000/' def verify(): code = input('Show-me the code: ') r = requests.post(url, data=json.dumps({'code': code})) return r.json() 下面是C代码: #include <Python

我正在尝试导入,并在C代码中运行此python函数:

import requests
import json

url = 'http://127.0.0.1:5000/'


def verify():
    code = input('Show-me the code: ')
    r = requests.post(url, data=json.dumps({'code': code}))
    return r.json()
下面是C代码:

#include <Python.h>

int main(void){

    PyObject *myModuleString, *myModule, *myFunction, *myResult;

    Py_Initialize();

    myModuleString = PyUnicode_FromString((char*)"verify");
    myModule = PyImport_Import(myModuleString);

    myFunction = PyObject_GetAttrString(myModule,(char*)"verify");
    myResult = PyObject_CallObject(myFunction, NULL);

    const char* s = PyUnicode_AsUTF8(myResult);
    printf("REPR: %s\n", s);

    Py_Finalize();

    return 0;
}
但它最终不起作用:

$gcc source\u code.o-o source\u code.bin
/usr/bin/ld:source_code.o:relocation R_X86_64_32在生成饼图对象时不能使用“.rodata.str1.1”;使用-fPIE重新编译
/usr/bin/ld:最终链接失败:输出上不可呈现的部分
collect2:错误:ld返回了1个退出状态
-fPIE
参数也没有帮助:

$gcc-c`python3.7-config--cflags--ldflags`-fPIE source\u code.c
$
$gcc source_code.o-o source_code.bin
/usr/bin/ld:source_code.o:在函数“main”中:
/home/user/source_code.c:7:对“Py_Initialize”的未定义引用
/usr/bin/ld:/home/user/source_code.c:9:PyUnicode\u FromString的未定义引用
/usr/bin/ld:/home/user/source_code.c:10:未定义对“PyImport_Import”的引用
/usr/bin/ld:/home/user/source_code.c:12:对“PyObject”的未定义引用
/usr/bin/ld:/home/user/source_code.c:13:对“PyObject\u CallObject”的未定义引用
/usr/bin/ld:/home/user/source_code.c:15:未定义对“PyUnicode”的引用
/usr/bin/ld:/home/user/source_code.c:18:未定义对“Py_Finalize”的引用
collect2:错误:ld返回了1个退出状态

如何定义引用以生成二进制文件?

我遇到了类似的错误。将
-no pie
参数添加到compile语句中对我很有效。 你可以试试这个:

gcc -c `python3.7-config --cflags --ldflags` source_code.c -no-pie

您应该将
cflags
用于编译,并将
ldflags
用于链接器驱动程序阶段。它在@AnttiHaapala运行,谢谢。如果你把答案贴出来,我就接受。
gcc -c `python3.7-config --cflags --ldflags` source_code.c -no-pie