Was Sie suchen, ist statische Kompilierung. statische Kompilierung durchführen enthält in die ausführbare Datei selbst alle Bibliotheken, so müssen Sie nicht so viel über Abhängigkeitsketten auf einem bestimmten System, Verteilung usw.
Sie können dies mit Sorge:
gcc -Wl,-Bstatic -llib1 -llib2 file.c
Die -Wl übergibt die folgenden Flags an den Linker, -Bastatic sagt ihm, wenn möglich, statisch zu verknüpfen, und dann lib1, lib2, sind die Bibliotheken, die Sie verknüpfen möchten.
Alternativ versuchen:
gcc -static-libgcc -static file.c
Die Zusammenstellung muss dann noch die Architektur des nicht-privilegierten System anzupassen. Und Sie müssen die statischen Bibliotheken auf dem Compilieren System installiert haben (lib.a)
Wenn sie richtig kompiliert, sollte es zeigen „kein dynamisches ausführbares“, wenn Sie laufen:
ldd a.out
Dank. Ich werde bestätigen, nachdem ich es überprüft habe, aber ich denke, das ist genau das, wonach ich gesucht habe! – Hector
Ok, jetzt bekomme ich das, was seltsam erscheint /usr/bin/ld: kann -lgcc_s nicht finden Alles, was ich hinzugefügt habe, ist, was Sie vorgeschlagen haben mit -openssl nach – Hector
Fügen Sie diese Flags hinzu: '-static-libgcc' und' -static-libstdC++ '(bei Verwendung von C++) –