GCC erstellt ein gemeinsames Objekt anstelle einer ausführbaren Binärdatei

Ich habe eine Bibliothek, die ich baue. Alle meine Objekte werden nacheinander kompiliert und verknüpft, wenn ich eines der folgenden Befehle ausführe:ar rcs lib/libryftts.a $^

gcc -shared $^ -o lib/libryftts.so

in meinem Makefile. Ich kann sie auch erfolgreich in @ installier/usr/local/lib Wenn ich die Datei mit nm teste, sind alle Funktionen vorhanden. Mein Problem ist, dass, wenn ich @ laufgcc testing/test.c -lryftts -o test && file ./test odergcc testing/test.c lib/libryftts.a -o test && file ./test es sagt

test: ELF 64-bit LSB shared object Anstatt vontest: ELF 64-bit LSB executable wie ich es erwarten würde. Was mache ich falsch

Antworten auf die Frage(2)

Ihre Antwort auf die Frage