Domanda

Sto compilando del codice che usa libcurl su un sistema Debian Linux. La mia macchina di sviluppo esegue Debian 5 ma voglio che il binario sia utilizzabile anche sui sistemi Debian 4 precedenti.

Trovo che se specifico -lcurl si collegherà a libcurl.so.4 ma i sistemi Debian 4 hanno solo libcurl.so.3

Esiste un modo in cui posso dire a GCC di collegarsi a libcurl.so.3 (che esiste sia in Debian 4 e 5) o solo a libcurl.so in modo da usare qualunque versione sia disponibile?

È stato utile?

Soluzione

Puoi passare il file .so effettivo invece di -l sulla riga di comando del linker e dovrebbe fare quello che vuoi.

Altri suggerimenti

Invece di usare " -lcurl " usa " -l: libcurl.so.3 " E ovviamente usa anche " -L _installed_path_ "

Che ne dici di creare un link simbolico locale al tuo progetto che si colleghi a .3, quindi puoi semplicemente usare -L al momento della compilazione. Non sono sicuro che avresti un conflitto di nomi, ma potresti sempre chiamarlo libcurl-old.so per ogni evenienza.

Penso che il modo corretto per farlo sarà quello di usare le bandiere --filter e --auxiliare del linker.

Non sono molto documentati, ma dovrebbero consentire di caricare simboli da diverse versioni della stessa libreria in base alla macchina su cui si è installati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top