Ubuntu lưu trữ các tệp thư viện của nó ở đâu?


17

Tôi muốn thêm thư viện của riêng mình để sử dụng trong quá trình biên dịch, nhưng không thực sự biết ubfox lưu trữ nó ở đâu.


5
Nó lưu trữ trong / usr / lib & / usr / bao gồm
karthick87

tôi đã tìm thấy thư viện của tôi trong / usr / bao gồm làm thế nào tôi nên đi với việc đưa chúng vào? Tôi chỉ nên đặt một tệp tiêu đề và tệp ac gần nó hay tôi nên viết tiêu đề và hàm cùng nhau trong một tệp .h?
david25

3
Thư viện và tiêu đề là những thứ khác nhau, / usr / bao gồm KHÔNG chứa thư viện, nó chứa các tiêu đề là định nghĩa của các chức năng / đối tượng có sẵn từ các thư viện. Câu hỏi nên được cải thiện, thật khó để hiểu bạn đang cố gắng đạt được điều gì.
João Pinto

Câu trả lời:


11

Dựa trên ý kiến ​​của bạn cho câu hỏi của bạn, tôi nghĩ điều bạn thực sự hỏi là "Làm cách nào để cài đặt thư viện tùy chỉnh tôi đã viết và tôi nên đặt nó ở đâu?"

Nói chung, những thứ được xây dựng cục bộ cho những người khác trên máy cho người dùng được đưa vào cây / usr / cục bộ. Tệp tiêu đề sẽ đi vào / usr / local / include. Thư viện đã biên dịch nên đi vào / usr / local / lib. Tệp .c không phải là một phần của thư viện, nó là một phần của nguồn và không phải là thứ thường không được cài đặt để sử dụng cho người dùng cuối. Bạn sẽ cần quyền truy cập root để đặt tệp vào một trong hai vị trí này.

Để xây dựng thư viện, trước tiên bạn cần xây dựng quyết định xem bạn muốn thư viện tĩnh hay động (chia sẻ). Thông tin thêm về việc tạo thư viện dùng chung có thể được tìm thấy trong phần 3.4, Tạo Thư viện dùng chung tại http://www.linux.org/docs/ldp/howto/Program-L Library-HOWTO / shared-lologists.html . (Họ cũng có đề xuất về nơi đặt công cụ - hầu hết các nhà phát triển sẽ có ý kiến ​​hoặc ba :-))


11

Tùy thuộc vào thư viện, ubfox lưu trữ thư viện của mình chủ yếu ở ba địa điểm

  1. / lib
  2. / usr / lib
  3. / usr / địa phương / lib

Sau đây là từ Tiêu chuẩn phân cấp hệ thống tệp

/ lib

Thư mục / lib chứa những hình ảnh thư viện dùng chung cần thiết để khởi động hệ thống và chạy các lệnh trong hệ thống tập tin gốc, tức là. bởi nhị phân trong / bin và / sbin.

/ usr / lib

/ usr / lib bao gồm các tệp đối tượng, thư viện và các tệp nhị phân nội bộ không có ý định được thực thi trực tiếp bởi người dùng hoặc tập lệnh shell. [22]

Các ứng dụng có thể sử dụng một thư mục con dưới / usr / lib. Nếu một ứng dụng sử dụng thư mục con, tất cả dữ liệu phụ thuộc vào kiến ​​trúc được sử dụng riêng cho ứng dụng phải được đặt trong thư mục con đó.

/ usr / local / lib chứa các thư viện cục bộ tức là một thư viện cụ thể cho hệ thống này nhưng tôi không thể tìm thấy các tham chiếu đến / usr / local / lib trong FHS, nó chỉ chứa lời giải thích cho / usr / local.


2

Ubuntu tuân theo Tiêu chuẩn phân cấp hệ thống tập tin ( http://en.wikipedia.org/wiki/Filesystem_HVELy_St Chuẩn ), các thư viện ứng dụng thông thường nên được lưu trữ trong / usr / lib.

Xin lưu ý rằng việc phát triển / quản lý thư viện không phải là một chủ đề tầm thường, bạn nên đọc một số tài liệu chi tiết hơn, đây là một hướng dẫn hay: http://www.yolinux.com/TUTORIALS/L LibraryArchives -StaticAndDocate.html


0

Bạn nên nói với trình biên dịch, nơi nó có thể tìm thấy thư viện của bạn. Giả sử, đường dẫn đến thư viện của bạn là "/path/to/lib/libfoo.a", bạn có thể biên dịch và liên kết chương trình của mình "hello.c" như thế này:

gcc -L/path/to/lib -lfoo hello.c

Điều này không cụ thể đối với Ubuntu, thực ra tất cả các trình biên dịch C mà tôi biết đều hỗ trợ các cờ đó.


-2

Trong Ubuntu, chúng được tìm thấy trong /usr/include.


1
Các tập tin tiêu đề được trong/usr/include. Các nhị phân thực tế cho một thư viện không được lưu trữ ở đó. Các tiêu đề có thể được coi là một phần của thư viện, nhưng chúng phải được cài đặt riêng và chúng được sử dụng để biên dịch các chương trình sử dụng thư viện. Khi một chương trình sử dụng thư viện đã được biên dịch, nó không cần hoặc sử dụng các tệp tiêu đề nữa.
Eliah Kagan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.