im cercando di costruire una libreria condivisa su una piattaforma Windows cygwin utilizzando g ++, e poi collegarlo con un altro file cpp: io uso i seguenti comandi:costruzione e il collegamento di una libreria condivisa
// generate object file
g++ -g -c -Wall -fPIC beat11.cpp -o beat11.o
// to generate library from the object file
g++ -shared -Wl,-soname,libbeat.so.1 -o libbeat.so.1.0.1 beat11.o -lc
// to link it with another cpp file; -I option to refer to the library header file
g++ -L. -lbeat -I . -o checkbeat checkbeat.cpp
durante il collegamento, il seguente errore affiora:
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld:
cannot find -llibbeat.so.1.0.1
collect2: ld returned 1 exit status
la libreria viene creato più che bene, ma posso trovare soltanto libbeat.so.1.0.1, non libbeat.so o libbeat.so.1 (o stanno non dovrebbe ci sono?)
una delle altre questioni suggerisce di creare un link simbolico a libbeat.so.1.0.1, ma che il lavoro non ha ancora troppo
Ho avuto lo stesso problema e il tuo commento usando -l: libname.so ha funzionato. Tuttavia, non capisco perché non funzioni con -L -lname come hai detto che il linker dovrebbe cercare lib .so pure. era anche mia comprensione che avrebbe dovuto funzionare, ma almeno con cygwin non sembra essere il caso. Non ho provato con altri compilatori. –
Devolus
La risposta qui mi ha aiutato: http://stackoverflow.com/questions/16154130/cygwin-g-linker-doesnt-find-shared-library – solstice333