我为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
有什么问题?
答案 0 :(得分:2)
-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