2012-07-14 48 views
18

Hãy nói rằng tôi có một tập tin rất đơn giản C (gọi tắt là foo.c):Thư viện mặc định được liên kết bởi gcc?

int main() 
{ 
    printf("foo"); 
    return 0; 
} 

Bây giờ tôi gọi gcc:

gcc foo.c 

Khi tôi gọi gcc (không có tùy chọn, như ở trên ví dụ), thư viện nào được liên kết theo mặc định và chúng nằm ở đâu? (Trên Mac OS X 10.7)

Trả lời

22

Các -v tùy chọn để gcc sẽ gây ra nó để đổ thông tin về các tùy chọn mặc định nó sẽ sử dụng bao gồm các đường dẫn thư viện và thư viện mặc định và đối tượng tập tin mà sẽ được liên kết trong.

Nếu bạn cung cấp tùy chọn -Wl,--verbose, gcc sẽ chuyển số --verbose đến trình liên kết sẽ đổ chính xác nơi tìm kiếm thư viện, bao gồm cả tìm kiếm thất bại và thành công.

Kết hợp cả hai lựa chọn, và bạn sẽ thấy chính xác những gì các thư viện được liên kết trong, và tại sao họ đang được liên kết trong.

gcc -v foo.c -Wl,--verbose 
+0

Trên mac của tôi, ld nói rằng --verbose là một tùy chọn không được công nhận – user1516425

+1

@ user1516425: oh - khi tôi thấy 'gcc', tôi chỉ giả định rằng GNU' ld' có liên quan. Xem một số tài liệu cho trình liên kết Xcode, https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/ld.1.html, bạn có thể muốn xem liệu '-t 'liên kết tùy chọn sẽ làm các trick. Một số tùy chọn khác để xem xét có thể được tìm thấy dưới tiêu đề "Tùy chọn để tìm kiếm mối liên kết" trên trang đó. –

-1

Thư viện chuẩn được liên kết theo mặc định. họ đang nằm trong/usr trong các máy linux

+2

'PATH' không được sử dụng cho điều đó. – zwol

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