Ubuntu เก็บไฟล์ไลบรารีไว้ที่ไหน


17

ฉันต้องการเพิ่มห้องสมุดของตัวเองเพื่อใช้ในการคอมไพล์ c แต่ไม่รู้จริงๆว่าอูบุนตูเก็บไว้ที่ไหน


5
มันเก็บไว้ใน/ usr / lib & / usr / include
karthick87

ฉันพบว่าห้องสมุดของฉันอยู่ใน / usr / รวมฉันจะใส่มันอย่างไร? ฉันควรใส่ไฟล์ส่วนหัวและไฟล์ ac ไว้ใกล้ ๆ หรือควรเขียนส่วนหัวและฟังก์ชั่นร่วมกันในไฟล์. h ไฟล์เดียว?
david25

3
ไลบรารีและส่วนหัวเป็นสิ่งที่แตกต่างกัน / usr / include ไม่มีห้องสมุด แต่ก็มีส่วนหัวซึ่งเป็นคำจำกัดความของฟังก์ชั่น / วัตถุที่มีอยู่จากห้องสมุด ควรปรับปรุงคำถามนั้นยากที่จะเข้าใจว่าคุณพยายามทำอะไร
João Pinto

คำตอบ:


11

จากความคิดเห็นของคุณกับคำถามของคุณฉันคิดว่าสิ่งที่คุณถามจริง ๆ คือ "ฉันจะติดตั้งไลบรารีแบบกำหนดเองที่ฉันเขียนได้อย่างไร

โดยทั่วไปสิ่งต่าง ๆ ที่สร้างขึ้นภายในเครื่องสำหรับผู้อื่นบนเครื่องต่อผู้ใช้จะถูกใส่ลงในแผนผัง / usr / local ไฟล์ส่วนหัวควรไปที่ / usr / local / include ไลบรารีที่คอมไพล์ควรไปที่ / usr / local / lib ไฟล์. c ไม่ได้เป็นส่วนหนึ่งของไลบรารีมันเป็นส่วนหนึ่งของแหล่งข้อมูลและไม่ใช่สิ่งที่ปกติไม่ได้ติดตั้งสำหรับการใช้งานของผู้ใช้ คุณจะต้องเข้าถึงรูทเพื่อวางไฟล์ในตำแหน่งใดตำแหน่งหนึ่ง

ในการสร้างห้องสมุดคุณจะต้องสร้างก่อนตัดสินใจว่าคุณต้องการห้องสมุดแบบคงที่หรือแบบไดนามิก (ใช้ร่วมกัน) ข้อมูลเพิ่มเติมเกี่ยวกับการสร้างห้องสมุดสาธารณะสามารถ foundin ส่วน 3.4 การสร้างห้องสมุดที่ใช้ร่วมกันที่http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html (พวกเขายังมีคำแนะนำเกี่ยวกับสถานที่ที่จะนำสิ่ง - นักพัฒนาส่วนใหญ่จะมีความเห็นหรือสาม :-))


11

ubuntu เก็บไลบรารีของมันไว้ในห้องสมุดเป็นหลักขึ้นอยู่กับห้องสมุด

  1. / lib
  2. / usr / lib
  3. / usr / local / lib

ต่อไปนี้มาจากลำดับชั้นของระบบไฟล์

/ lib

ไดเร็กทอรี / lib มีอิมเมจไลบรารีที่แบ่งใช้เหล่านั้นซึ่งจำเป็นต่อการบูตระบบและรันคำสั่งในระบบไฟล์รูทเช่น โดยไบนารีใน / bin และ / sbin

/ usr / lib

/ usr / lib รวมถึงวัตถุไฟล์ไลบรารีและไบนารีภายในที่ไม่ได้ตั้งใจให้เรียกใช้งานโดยตรงจากผู้ใช้หรือสคริปต์เชลล์ [22]

แอปพลิเคชันอาจใช้ไดเรกทอรีย่อยเดียวภายใต้ / usr / lib หากแอปพลิเคชันใช้ไดเรกทอรีย่อยข้อมูลทั้งหมดขึ้นอยู่กับสถาปัตยกรรมที่ใช้โดยเฉพาะแอปพลิเคชันจะต้องอยู่ในไดเรกทอรีย่อยนั้น

/ usr / local / libมีไลบรารีท้องถิ่นเช่นหนึ่งที่เฉพาะเจาะจงสำหรับระบบนี้ แต่ฉันไม่สามารถหาการอ้างอิงถึง / usr / local / lib ใน FHS มันมีเพียงคำอธิบายสำหรับ / usr / local


2

Ubuntu ตามมาตรฐานลำดับขั้นของระบบแฟ้ม ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard ) ไลบรารีแอปพลิเคชันทั่วไปควรเก็บไว้ใน / usr / lib

โปรดทราบว่าการพัฒนา / การจัดการห้องสมุดไม่ใช่เรื่องเล็กน้อยคุณควรอ่านเอกสารรายละเอียดเพิ่มเติมนี่คือบทแนะนำที่ดี: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html


0

คุณควรบอกคอมไพเลอร์ว่าจะหาห้องสมุดของคุณได้จากที่ใด สมมติว่าเส้นทางไปยังห้องสมุดของคุณคือ "/path/to/lib/libfoo.a" คุณสามารถรวบรวมและลิงก์โปรแกรม "hello.c" ของคุณเช่นนี้:

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

นี่ไม่ใช่เฉพาะของ Ubuntu จริงๆแล้ว C-compilers ทั้งหมดที่ฉันรู้จักสนับสนุนการตั้งค่าสถานะเหล่านั้น


-2

ใน Ubuntu /usr/includeพวกเขาจะพบใน


1
ส่วนหัวของไฟล์ที่/usr/includeอยู่ใน ไบนารีที่เกิดขึ้นจริงสำหรับห้องสมุดจะไม่ถูกเก็บไว้ที่นั่น ส่วนหัวอาจได้รับการพิจารณาว่าเป็นส่วนหนึ่งของไลบรารี แต่จะต้องติดตั้งแยกต่างหากและใช้เพื่อคอมไพล์โปรแกรมที่ใช้ไลบรารี เมื่อโปรแกรมที่ใช้ไลบรารีได้รับการรวบรวมแล้วก็ไม่จำเป็นต้องใช้ไฟล์ส่วนหัวอีกต่อไป
Eliah Kagan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.