Ich habe einen Fehler kompilieren beim Versuch, eine Bibliothek zu verknüpfen. Hier ist der Fehler zusammen mit meinen KompilierungsbefehlenGCC-Linking-Bibliothek mit -l und -L
gcc snw-server.c -Wall -g -L\ -lpacketErrorSend -o snw-server
/tmp/cc7dekxv.o: In function `main':
/home/mike/CSCI446/project3/snw-server.c:113: undefined reference to `packetErrorSend'
collect2: error: ld returned 1 exit status
Makefile:5: recipe for target 'file' failed
make: *** [file] Error 1
Ich war anfangs etwas verwirrt über den Befehl -L. Die Bibliotheksdatei befindet sich im aktuellen Verzeichnis, in dem sich alle anderen Dateien befinden. Hier sind die Dateien in meinem Verzeichnis.
libpacketErrorSend.a Makefile packetErrorSend.h snw-client.c snw-server.c
und hier ist das, was mein Makefile
file: snw-server.c snw-client.c
gcc snw-server.c -Wall -g -L\ -lpacketErrorSend -o snw-server
gcc snw-client.c -Wall -g -L\ -lpacketErrorSend -o snw-client
clean:
rm -f snw-server snw-client
mir sicher, dass ich eingeschlossen packetErrorSend.h in den .c-Dateien wie
aussieht. Ich bin mir nicht sicher, ob ich die Bibliothek richtig verlinkt habe.Die Funktion packetErrorSend wurde von unserem Kursleiter so erstellt, dass sie dieselben Argumente wie send (2) (Netzwerk) verwendet, aber Pakete verloren. Er funktioniert mit send, kompiliert jedoch nicht, wenn versucht wird, die Bibliothek zu verknüpfen und die Funktion in packetErrorSend zu ändern.
Danke, Mike
'-L \ -lpacketErrorSend' ??? => '-L. -lpacketErrorSend' – Stargateur
Das aktuelle Verzeichnis ist nicht mit "\" gekennzeichnet, es ist "." – Scooter