Я могу успешно скомпилировать и связать свою программу, но запуск файла 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)