Come posso eliminare la dipendenza dinamica
libgmp
e passare da questo:staticamente Link GMP a un'applicazione Haskell utilizzando 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)
a questo (attualmente desiderato):
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)
in modo pulito e portatile che funziona solo su tutte le distribuzioni GNU/Linux (e non scherzando con BSD (incluso OS X))?
Vedete altre dipendenze che potrebbero causare problemi nell'elenco attualmente desiderato come indicato sopra quando distribuite un singolo binario Haskell che ha come target più distribuzioni GNU/Linux?
Note:
- mia app è GPLv3 in modo sorgono problemi di violazione di licenza per quanto riguarda GMP
- Definizione di un percorso per
libgmp.a
non funziona (How to selectively link certain system libraries statically into Haskell program binary?),libgmp
è ancora elencato nell'outputldd
.
Come si svolge il processo di distribuzione? In particolare cosa ti impedisce di implementare libgmp insieme alla tua applicazione? Cosa intendi per non incasinare su BSD incluso OSX? Non è possibile eseguire lo stesso binario su entrambi OSX e Linux. – asm
@AndrewMyers Uso Cabal per le build. Distribuisci libgmp? Come? Voglio supportare almeno Windows, Linux, OS X e FreeBSD. Se devo creare una versione di libreria condivisa/dinamica di libgmp per ogni piattaforma per distribuirla insieme alla mia app, è troppo lavoro. Non rovinare: una soluzione che funziona preferibilmente non solo su un singolo sistema operativo; Stavo pensando a qualcuno che potrebbe suggerire di usare qualcosa come 'locate libgmp' e usare qualsiasi cosa possa tornare al momento del collegamento e' locate' si comporta in modo diverso su diversi SO. (Sostituisci 'locate' con qualsiasi altro strumento qui come desideri.) –
Sembra che tu stia parlando della distribuzione di un binario, che dovrai costruire per ogni piattaforma. Dal momento che devi costruirlo per ogni piattaforma, devi avere comunque una versione di libgmp per ogni piattaforma in modo da poterlo semplicemente pacchettizzare con il tuo binario. Mi sto perdendo qualcosa su come hai intenzione di distribuire la tua applicazione? – asm