Làm thế nào tôi có thể thả phụ thuộc động trên
libgmp
và đi từ này:Tĩnh liên kết GMP đến một ứng dụng Haskell sử dụng GHC (+ LLVM)linux-vdso.so.1 => (0x00007fffdccb1000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fb01afc1000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb01acc7000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb01aabe000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb01a8ba000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb01a69d000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb01a2df000) /lib64/ld-linux-x86-64.so.2 (0x00007fb01b249000)
này (hiện mong muốn):
linux-vdso.so.1 => (0x00007fffdccb1000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb01acc7000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb01aabe000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb01a8ba000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb01a69d000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb01a2df000) /lib64/ld-linux-x86-64.so.2 (0x00007fb01b249000)
một cách sạch sẽ và di động chỉ hoạt động trên tất cả các bản phân phối GNU/Linux (và không gây rối với BSD (bao gồm OS X))?
Bạn có thấy bất kỳ phụ thuộc nào khác có thể gây ra sự cố trong danh sách hiện tại mong muốn như đã nêu ở trên khi phân phối một phân tách cú pháp Haskell duy nhất cho nhiều bản phân phối GNU/Linux không?
Ghi chú:
- ứng dụng của tôi là GPLv3 nên không có vấn đề vi phạm bản quyền phát sinh liên quan đến GMP
- Chỉ định đường dẫn đến
libgmp.a
không hoạt động (How to selectively link certain system libraries statically into Haskell program binary?),libgmp
vẫn là được liệt kê trong đầu raldd
.
Quy trình triển khai của bạn như thế nào? Cụ thể những gì ngăn cản bạn triển khai libgmp cùng với ứng dụng của bạn? Điều gì làm bạn có nghĩa là không rối tung lên BSDs bao gồm OSX? Bạn không thể chạy cùng một nhị phân trên cả OSX và Linux. – asm
@AndrewMyers Tôi sử dụng Cabal để xây dựng. Triển khai libgmp? Làm sao? Tôi muốn hỗ trợ ít nhất Windows, Linux, OS X và FreeBSD. Nếu tôi cần xây dựng một phiên bản thư viện chia sẻ/động của libgmp cho mỗi nền tảng để triển khai nó cùng với ứng dụng của tôi, đó chỉ là quá nhiều công việc. Không lộn xộn: một giải pháp hoạt động tốt nhất không chỉ trên một hệ điều hành duy nhất; đã suy nghĩ của một ai đó có thể gợi ý sử dụng một cái gì đó như 'xác định vị trí libgmp' và sử dụng bất cứ điều gì nó có thể trở lại tại thời gian liên kết và' xác định vị trí' hành xử khác nhau trên hệ điều hành khác nhau. (Thay thế 'định vị' bằng bất kỳ công cụ nào khác ở đây như bạn muốn.) –
Có vẻ như bạn đang nói về việc triển khai một tệp nhị phân, mà bạn sẽ phải xây dựng cho mỗi nền tảng. Vì bạn phải xây dựng nó cho mỗi nền tảng, bạn phải có một phiên bản của libgmp cho mỗi nền tảng anyway, do đó bạn chỉ có thể gói này với nhị phân của bạn. Tôi có thiếu điều gì đó về cách bạn định phân phối ứng dụng của mình không? – asm