Quello che stai cercando è la compilazione statica. Esecuzione di compilazione statica include tutte le librerie in dell'eseguibile stesso, in modo da non devono preoccuparsi tanto di catene di dipendenza su un sistema specifico, distribuzione, ecc
Si può fare questo con:
gcc -Wl,-Bstatic -llib1 -llib2 file.c
Il -Wl passa i flag seguenti al linker, -Bstatic dice di collegarsi staticamente se possibile, e quindi lib1, lib2, sono le librerie che si intende collegare.
In alternativa, provate:
gcc -static-libgcc -static file.c
La compilation sarà ancora bisogno di abbinare l'architettura del sistema di non privilegiato. E avete bisogno di avere le librerie statiche installati sul sistema di compilazione (lib.a)
Se compilato correttamente, dovrebbe mostrare "Non una dinamica eseguibile" quando si esegue:
ldd a.out
fonte
2013-04-27 00:17:54
Grazie. Confermerò dopo averlo controllato ma penso che sia esattamente quello che cercavo! – Hector
Ok, ora ho questo che sembra strano /usr/bin/ld: impossibile trovare -lgcc_s Tutto quello che ho aggiunto è quello che hai suggerito con -openssl dopo – Hector
Aggiungi anche questi flag: '-static-libgcc' e' -static-libstdC++ '(se si usa C++) –