Jeg prøver å kompilere programmet mitt, og det returnerer denne feilen:
usr/bin/ld: cannot find -l<nameOfTheLibrary>
i makefilen min bruker jeg kommandoen g++
og lenker til biblioteket mitt som er en symbolsk lenke til biblioteket mitt som ligger i en annen katalog.
Er det et alternativ å legge til for å få det til å fungere?
For å finne ut hva lenkeren leter etter, kjør den i verbose-modus.
For eksempel møtte jeg dette problemet mens jeg prøvde å kompilere MySQL med ZLIB-støtte. Jeg fikk en feil som dette under kompilering:
/usr/bin/ld: cannot find -lzlib
Jeg gjorde litt Googl ' ing og fortsatte å komme over forskjellige problemer av samme slag der folk ville si å sørge for at
Jeg kom over et annet innlegg på Internett som foreslo å kjøre make med LD_DEBUG=all:
LD_DEBUG=all make
Selv om jeg fikk massevis av feilsøkingsutdata, var det faktisk ikke nyttig. Det ga mer forvirring enn noe annet. Så jeg var i ferd med å gi opp.
Så fikk jeg en åpenbaring. Jeg tenkte å faktisk sjekke hjelpeteksten for ld-kommandoen:
ld --help
Fra det fant jeg ut hvordan jeg skulle kjøre ld i verbose-modus (forestill deg det):
ld -lzlib --verbose
Dette er utdataene jeg fikk:
==================================================
attempt to open /usr/x86_64-linux-gnu/lib64/libzlib.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libzlib.a failed
attempt to open /usr/local/lib64/libzlib.so failed
attempt to open /usr/local/lib64/libzlib.a failed
attempt to open /lib64/libzlib.so failed
attempt to open /lib64/libzlib.a failed
attempt to open /usr/lib64/libzlib.so failed
attempt to open /usr/lib64/libzlib.a failed
attempt to open /usr/x86_64-linux-gnu/lib/libzlib.so failed
attempt to open /usr/x86_64-linux-gnu/lib/libzlib.a failed
attempt to open /usr/local/lib/libzlib.so failed
attempt to open /usr/local/lib/libzlib.a failed
attempt to open /lib/libzlib.so failed
attempt to open /lib/libzlib.a failed
attempt to open /usr/lib/libzlib.so failed
attempt to open /usr/lib/libzlib.a failed
/usr/bin/ld.bfd.real: cannot find -lzlib
Ding, ding, ding...
Så, for å endelig fikse det slik at jeg kunne kompilere MySQL med min egen versjon av ZLIB (i stedet for den medfølgende versjonen):
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
Voila!
Hvis navnet på biblioteket ditt er f.eks. libxyz.so
og det ligger på banen f.eks:
/home/user/myDir
for å koble det til programmet ditt:
g++ -L/home/user/myDir -lxyz myprog.cpp -o myprog