Warum kann gcc meine statische Bibliothek nicht finden?

Lesezeit: 1 Minute

Benutzer-Avatar
sdasdadas

Ich versuche, die cspec-Bibliothek in mein C-Projekt einzubinden. Dies ist mein Makefile, das sich im Ordner tests befindet:

all: test

test: sample.o
    gcc -Wall -o test sample.o -L ../lib/cspec -llibcspec.a

sample.o: sample.c
    gcc -Wall -c sample.c -I../lib/cspec

clean:
    rm -rf *o test

Mein Verzeichnis ist:

/
/src
/lib
/lib/cspec
/tests

Beim Ausführen von make erhalte ich die folgende Fehlermeldung:

gcc -Wall -o test sample.o -L ../lib/cspec -llibcspec.a
/usr/bin/ld: cannot find -llibcspec.a

Ich habe sichergestellt, dass sich die Datei libcspec.a im Ordner lib/cspec befindet, aber um sicherzugehen, habe ich auch versucht, sie im Ordner tests abzulegen und den Befehl -L zu entfernen, ohne Erfolg.

  • Versuchen Sie, das Leerzeichen danach zu entfernen -L.

    – jmkeyes

    29. August 2012 um 22:04 Uhr

  • @Joshua K: nein – Leerzeichen danach -L ist optional und spielt keine Rolle. Dito für -I.

    – PaulR

    29. August 2012 um 22:07 Uhr


Veränderung:

gcc -Wall -o test sample.o -L ../lib/cspec -llibcspec.a

zu:

gcc -Wall -o test sample.o -L ../lib/cspec -lcspec

(Laut Konvention fügen gcc und andere *nix-Compiler automatisch die lib Präfix und das entsprechende Suffix.)

  • Beachten Sie, dass, wenn Sie zufällig eine haben libcspec.so im selben Verzeichnis wie libcspec.aführt Ihr Befehl zu einer Verknüpfung mit der .so Bibliothek. Wenn Sie die wirklich verwenden möchten .a Bibliothek, verwenden -l:cspec.a. (Siehe stackoverflow.com/questions/6578484/…)

    – Jay Sullivan

    13. Juli 2020 um 23:09 Uhr


1252530cookie-checkWarum kann gcc meine statische Bibliothek nicht finden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy