Sto lavorando a un progetto che utilizza i driver ftdi D2XX per interfacciarsi con il dispositivo ENTTEC DMX usb pro. I driver ftdi (libftdi2xx.so.1.1.12 memorizzati in/usr/local/lib /) sono compilati su una versione di glibc v2.14 o successiva.Collegamento della libreria compilata alla versione più recente di glibc
Sto sviluppando su debian 7 che supporta solo fino a glibc v2.13. Quando si esegue il codice C che ho scritto (che effettua le chiamate al driver FTDI) dà un errore:
./a.out: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/lib/libftd2xx.so)
Questo ha senso, sapendo che la versione glibc è incompatibile. Ho scaricato e installato l'ultima versione di glibc (V2.17) in una directory temporanea ('~/glibc-testing/install/lib /') sul mio computer e utilizzando la chiamata:
~/glibc-testing/install/lib/ld-linux-x86-64.so.2 --library-path ~/glibc-testing/install/lib/ ./a.out
Con questa chiamata, sono in grado di eseguire correttamente il codice C.
Vorrei compilare questo codice C in una libreria condivisa. Verrà utilizzato per interfacciarsi con il dispositivo DMX e verrà chiamato da un'applicazione principale sviluppata su C#.
Non so come andare avanti. Quello che sembra che devo fare è dire al driver fdti di usare sempre gli ultimi glibc mentre lascia che il resto dell'applicazione usi le normali librerie. I driver ftdi 2DXX sono disponibili solo precompilati (nessun codice sorgente disponibile). C'è un modo per collegare questo programma precompilato alla nuova libreria?
Ho esaminato le opzioni in cui esporto LD_LIBRARY_PATH =/home /.../ glibc/install/lib/e ho avuto scarso successo.
Grazie!
L'unico modo corretto di azione sarebbe provare e comunicare con chiunque crei il driver e richiedere una versione collegata a un vecchio glibc. –
Hai provato a utilizzare LD_PRELOAD? – maha
Penso che l'impostazione del percorso dovrebbe fare il trucco, vedere [qui] (http://www.eyrie.org/~eagle/notes/rpath.html). [È anche possibile ripristinare il percorso nell'applicazione dopo la compilazione] (https://stackoverflow.com/questions/13769141/can-i-change-rpath-in-an-already-compiled-binary)! – Bort