Невозможно связать общую библиотеку для python - PullRequest
0 голосов
/ 22 сентября 2018

Я делаю модуль для apache и использую gcc для компиляции:

gcc \
    $(apr-1-config --cflags) \
    $(apr-1-config --includes) \
    $(python3.6-config --cflags) \
    -fPIC -DSHARED_MODULE \
    -I/usr/include/httpd/ \
    -c mod_demo.c

Но когда я пытаюсь связать библиотеки python, он не работает:

ld \
    $(apr-1-config --link-ld) \
    $(python3.6-config --ldflags) \
    -Bshareable \
    -o mod_demo.so \
    mod_demo.o

Выводсообщение:

ld: -linker not found.

В чем проблема ?.Флаги:

[root@demo demo]# python3.6-config --ldflags
-L/usr/lib64 -lpython3.6m -lpthread -ldl  -lutil -lm  -Xlinker -export-dynamic

Если записать флаги без -Xlinker, все работает нормально:

 ld \
    $(apr-1-config --link-ld) \
    -L/usr/lib64 -lpython3.6m -lpthread -ldl  -lutil -lm  -export-dynamic \
    -Bshareable \
    -o mod_demo.so \
    mod_demo.o

Как использовать собственные флаги из python3.6-config ?, в чем проблема-Xlinker

1 Ответ

0 голосов
/ 22 сентября 2018

-Xlinker -export-dynamic - это единственная вещь, которая указывает GCC передать -export-dynamic компоновщику.

Вы неправильно используете python3.6-config --ldflags в том смысле, что он ожидает, что его выходные данные будут переданы GCC, а неld напрямую.

Попробуйте это:

gcc \
    $(apr-1-config --link-ld) \
    $(python3.6-config --ldflags) \
    -shared \
    -o mod_demo.so \
    mod_demo.o
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...