Tôi đã hỏi một câu hỏi khác hơi quá phức tạp cho một câu trả lời thẳng nên tôi đã đun sôi nó xuống câu hỏi cơ bản này ...cython - distutils vs cmake: liên kết với libpython?
Khi tôi xây dựng aModule.so
bằng cách sử dụng một rãnh chuẩn chuẩn, nó dường như không liên kết chống lại libpython
:
$ otool -L aModule.so
aModule.so:
/usr/local/lib/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/local/opt/thrift/lib/libthrift-0.9.0.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
Nhưng khi tôi xây dựng với một thiết lập cmake, nó giữ sản xuất một lệnh mối liên kết liên kết libpython
vào .so:
$ otool -L aModule.so
aModule.so:
/System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.1)
/usr/local/opt/thrift/lib/libthrift-0.9.0.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/local/lib/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
Mô-đun được tạo ra bởi các rãnh có vẻ hoạt động tốt với bất kỳ cài đặt python2.7 nào của tôi (hệ thống hoặc virtualenv cho dự án của tôi). Trong khi các cmake tai nạn với một phiên bản không phù hợp khi tôi cố gắng và nhập khẩu nó với bất cứ điều gì nhưng python hệ thống liên kết.
Tại sao mô-đun phân phối hoạt động tốt mà không bị liên kết? Và nếu đó là trường hợp, tại sao tôi cần phải có cmake xây dựng liên kết libpython, và làm thế nào tôi có thể ngăn chặn nó nếu thats trường hợp để nó hoạt động với bất kỳ thông dịch viên python2.7 của tôi mà không có một vụ tai nạn?
Hiện nay tôi có thể hướng cmake tại python đúng với: CXX=g++ cmake -DPYTHON_LIBRARY=/path/to/another/Python
Rõ ràng là người không liên kết trực tiếp với một nhị phân Python hoạt động vì liên kết động móc lên các ký hiệu với Python đang chạy hiện tại (có lẽ là một điều tốt). Không thể nói lý do tại sao cmake là kéo trong Python nhị phân mặc dù; Tôi đã không bao giờ thực sự sử dụng cmake bản thân mình. – torek
Chính xác những gì tôi đã tìm và đó là hành vi tôi muốn. Điều cmake đang xảy ra ở đâu đó từ mô-đun tìm thấy python và thêm nó. Tôi chỉ muốn tìm một giải pháp để có thể không liên kết với python: - / – jdi