2009-04-07 50 views
22

Tôi có thư viện được chia sẻ (* .so) được tạo bằng Công cụ biên dịch Real View (RVCT 3.2) trên mục tiêu cửa sổ. Sau đó, tôi cố gắng liên kết tệp * .so này với ứng dụng của tôi bằng gcc trên hệ thống linux.Liên kết thư viện được chia sẻ bằng gcc

Tùy chọn gcc để liên kết thư viện được chia sẻ này với linux ứng dụng của tôi là gì?

Câu hỏi của tôi là, là lựa chọn -shared, được sử dụng như

gcc -shared myfile.so 

..., được sử dụng để tạo ra các tập tin SO hoặc liên kết các SO nộp? Tôi tin rằng nó tạo ra một cái gì đó như:

gcc -lmyfile.so 

Có đủ không? Hoặc là có bất kỳ chuyển đổi khác để nói với các mối liên kết đó là một thư viện động (đối tượng được chia sẻ)?

Trả lời

12

gcc -lmyfile là đủ (miễn là thư viện của bạn có tên là libmyfile.so). Trình liên kết tìm kiếm các đối tượng được chia sẻ khi có thể và AFAIK thích chúng hơn.

+0

Tôi có một câu hỏi liên quan: Trong trường hợp thư viện libmyfile.so của tôi là một liên kết tượng trưng đến libyourfile.so, sẽ liên kết chương trình của tôi sử dụng -lmyfile gcc vẫn làm việc? (Tôi cần phải duy trì tính tương thích ngược của một số khách hàng không biết về thay đổi tên thư viện.) – baskin

+3

@jpalecek Liệu nó có hoạt động nếu tên tệp có phần mở rộng .dll không? – saadtaame

+1

Nếu thư viện không nằm trong thư mục '/ usr/bin/ld' thì sao? –

18

gì làm việc cho tôi là:

gcc -L. -l:myfile.so 
+0

cảm ơn bạn rất nhiều. Nó đã giúp rất nhiều –

+0

lệnh này đang làm gì? – Gaunt

+0

-L {đường dẫn đến tệp chứa thư viện} -l $ {tên thư viện} nếu tôi có thư viện có tên libmine.so trong/home/newhall/lib/thì tôi làm như sau để liên kết nó vào chương trình của tôi: $ gcc -o myprog myprog.c -L/home/newhall/lib -lmine [Trang web tham chiếu] (https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html) – Gowrav

Các vấn đề liên quan