无法 link python 的共享库
Cannot link a shared library for python
我为 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
但是当我尝试 link 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
有什么问题?
-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
我为 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
但是当我尝试 link 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
有什么问题?
-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