im cố gắng xây dựng một thư viện chia sẻ trên một nền tảng cửa sổ Cygwin sử dụng g ++, và sau đó liên kết nó với một tập tin cpp: tôi sử dụng các lệnh sau:xây dựng và liên kết một thư viện chia sẻ
// 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
trong khi liên kết, các lỗi sau cây trồng lên:
/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
thư viện được tạo ra chỉ là tốt, nhưng tôi chỉ có thể tìm thấy libbeat.so.1.0.1, không libbeat.so hoặc libbeat.so.1 (hoặc là họ không được phép ở đó?)
một trong những câu hỏi khác đề nghị tạo ra một liên kết tượng trưng đến libbeat.so.1.0.1, nhưng điều đó làm việc quá didnt
Tôi đã có cùng một vấn đề và bình luận của bạn bằng cách sử dụng -l: libname.so làm việc. Tuy nhiên, tôi không thực sự hiểu lý do tại sao nó không hoạt động với -L -lname như bạn đã nói rằng mối liên kết nên tìm kiếm lib .so là tốt. nó cũng là sự hiểu biết của tôi rằng nó sẽ làm việc nhưng ít nhất với Cygwin nó không có vẻ là trường hợp. Không cố gắng với các trình biên dịch khác. –
Devolus
Câu trả lời ở đây đã giúp tôi: http://stackoverflow.com/questions/16154130/cygwin-g-linker-doesnt-find-shared-library – solstice333