Ich möchte wissen, wann ich ld Linker anstelle von gcc verwenden sollte. Ich habe gerade eine einfache Hallo-Welt in C++ geschrieben, natürlich schließe ich Iostream-Bibliothek ein. Wenn ich eine Binärdatei mit gcc machen möchte, verwende ich einfach:Wann sollte ich anstelle von gcc ld verwenden?
g++ hello hello.cpp
und ich habe meine Binärdatei.
Später versuche ich, ld-Linker zu verwenden. Um eine Objektdatei zu erhalten, verwende ich: g++ -c hello.cpp
. Ok, das war einfach, aber der Link Befehl war schrecklich lang:
ld -o hello.out hello.o -L /usr/lib/gcc/x86_64-linux-gnu/4.8.4/ /usr/lib/gcc/x86_64-linux-gnu/4.8.4/crtbegin.o /usr/lib/gcc/x86_64-linux-gnu/4.8.4/crtend.o /usr/lib/x86_64-linux-gnu/crti.o /usr/lib/x86_64-linux-gnu/crtn.o /usr/lib/x86_64-linux-gnu/crt1.o -dynamic-linker /lib64/ld-linux-x86-64.so.2 -lstdc++ -lc
.
Ich weiß Tatsache, dass gcc
die LD verwendet. Mit gcc
ist in allen Fällen oder nur in den meisten Fällen besser? Bitte sagen Sie mir etwas über Fälle, in denen LD-Linker einen Vorteil hat.
Die direkte Verwendung des Linkers hat nur dann einen Vorteil, wenn Sie GCC nicht verwenden. Andernfalls sparen Sie mit 'gcc' oder' g ++ 'viel Tipparbeit und, was noch wichtiger ist, all die Trauer, die damit verbunden ist, genau herauszufinden, was Sie tippen müssen und wann. –
Danke, ich hatte Angst darüber, dass ich keine hilfreiche Verwendung von ld bemerkt habe. Btw Sie können
g++ -v -o hello hello.cpp
verwenden, welche Bibliotheken Sie verknüpfen müssen. Also alle funktionen über link files/liberries kann ich mit gcc einstellen? – IceDas Problem ist, dass sich die Liste der Objektdateien, Bibliotheken und Optionen ändert, je nachdem, welche GCC-Optionen Sie verwenden, welches Betriebssystem Sie verwenden, welche Version von GCC und möglicherweise andere Faktoren. Beachten Sie, dass Sie eine mit GCC erstellte Objektdatei verknüpfen können, indem Sie einen Befehl wie 'gcc -o hallo hello.o' verwenden. –