Вызов Python из C: ./a.out: /lib/libgcc_s.so.1: версия `GCC_7.0.0 'не найдена (требуется ./a.out) - PullRequest
0 голосов
/ 19 февраля 2020

Я могу успешно скомпилировать и связать свою программу, но запуск файла a.out приводит к:

./a.out: /lib/libgcc_s.so.1: version `GCC_7.0.0' not found (required by ./a.out)

Вывод ls /lib | grep libgcc:

libgcc_s-4.8.5-20150702.so.1
libgcc_s.so.1

My G CC - версия 4.8.5. Есть ли какой-то шаг, который я пропускаю, чтобы заставить его использовать libgcc_s-4.8.5-20150702.so.1?

Я могу скомпилировать и запустить Python C Расширения, созданные с помощью python setup.py install, поэтому я знаю, что моя версия G CC должна быть в состоянии сделать это. Однако сейчас я пытаюсь создать приложение C, которое может запускать Python, которое выдает эту ошибку.


У меня есть тривиальный файл, c.c:

#include <Python.h>
#include <stdio.h>
int main(void)
{
    Py_Initialize();
    printf("hello\n");
    return 1;
}

~ / apps / miniconda3 / bin / python3 -config --cflags приводит к следующему:

-I/apps/miniconda3/include/python3.7m -I/apps/miniconda3/include/python3.7m  -Wno-unused-result -Wsign-compare -march=prescott -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O3 -pipe  -fdebug-prefix-map==/usr/local/src/conda/- -fdebug-prefix-map==/usr/local/src/conda-prefix -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -flto -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -DNDEBUG -fwrapv -O3 -Wall

~ / apps / miniconda3 / bin / python3 -config --ldflags В результате получается следующее:

-L/apps/miniconda3/lib/python3.7/config-3.7m-i386-linux-gnu -L/apps/miniconda3/lib -lpython3.7m -lpthread -ldl  -lutil -lrt -lm  -Xlinker -export-dynamic

Я компилирую так:

gcc -c $(~/apps/miniconda3/bin/python3-config --cflags) -m32 c.c

Я делаю ссылки вот так:

gcc c.o $(~/apps/miniconda3/bin/python3-config --ldflags) -m32

Обе эти команды работают без ошибка или предупреждение, и в результате получается исполняемый файл a.out.

Однако при запуске этого исполняемого файла появляется сообщение об ошибке:

./a.out: /lib/libgcc_s.so.1: version `GCC_7.0.0' not found (required by ./a.out)
...