ฉันต้องการเพิ่มห้องสมุดของตัวเองเพื่อใช้ในการคอมไพล์ c แต่ไม่รู้จริงๆว่าอูบุนตูเก็บไว้ที่ไหน
ฉันต้องการเพิ่มห้องสมุดของตัวเองเพื่อใช้ในการคอมไพล์ c แต่ไม่รู้จริงๆว่าอูบุนตูเก็บไว้ที่ไหน
คำตอบ:
จากความคิดเห็นของคุณกับคำถามของคุณฉันคิดว่าสิ่งที่คุณถามจริง ๆ คือ "ฉันจะติดตั้งไลบรารีแบบกำหนดเองที่ฉันเขียนได้อย่างไร
โดยทั่วไปสิ่งต่าง ๆ ที่สร้างขึ้นภายในเครื่องสำหรับผู้อื่นบนเครื่องต่อผู้ใช้จะถูกใส่ลงในแผนผัง / 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 (พวกเขายังมีคำแนะนำเกี่ยวกับสถานที่ที่จะนำสิ่ง - นักพัฒนาส่วนใหญ่จะมีความเห็นหรือสาม :-))
ubuntu เก็บไลบรารีของมันไว้ในห้องสมุดเป็นหลักขึ้นอยู่กับห้องสมุด
ต่อไปนี้มาจากลำดับชั้นของระบบไฟล์
/ lib
ไดเร็กทอรี / lib มีอิมเมจไลบรารีที่แบ่งใช้เหล่านั้นซึ่งจำเป็นต่อการบูตระบบและรันคำสั่งในระบบไฟล์รูทเช่น โดยไบนารีใน / bin และ / sbin
/ usr / lib
/ usr / lib รวมถึงวัตถุไฟล์ไลบรารีและไบนารีภายในที่ไม่ได้ตั้งใจให้เรียกใช้งานโดยตรงจากผู้ใช้หรือสคริปต์เชลล์ [22]
แอปพลิเคชันอาจใช้ไดเรกทอรีย่อยเดียวภายใต้ / usr / lib หากแอปพลิเคชันใช้ไดเรกทอรีย่อยข้อมูลทั้งหมดขึ้นอยู่กับสถาปัตยกรรมที่ใช้โดยเฉพาะแอปพลิเคชันจะต้องอยู่ในไดเรกทอรีย่อยนั้น
/ usr / local / libมีไลบรารีท้องถิ่นเช่นหนึ่งที่เฉพาะเจาะจงสำหรับระบบนี้ แต่ฉันไม่สามารถหาการอ้างอิงถึง / usr / local / lib ใน FHS มันมีเพียงคำอธิบายสำหรับ / usr / local
Ubuntu ตามมาตรฐานลำดับขั้นของระบบแฟ้ม ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard ) ไลบรารีแอปพลิเคชันทั่วไปควรเก็บไว้ใน / usr / lib
โปรดทราบว่าการพัฒนา / การจัดการห้องสมุดไม่ใช่เรื่องเล็กน้อยคุณควรอ่านเอกสารรายละเอียดเพิ่มเติมนี่คือบทแนะนำที่ดี: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
คุณควรบอกคอมไพเลอร์ว่าจะหาห้องสมุดของคุณได้จากที่ใด สมมติว่าเส้นทางไปยังห้องสมุดของคุณคือ "/path/to/lib/libfoo.a" คุณสามารถรวบรวมและลิงก์โปรแกรม "hello.c" ของคุณเช่นนี้:
gcc -L/path/to/lib -lfoo hello.c
นี่ไม่ใช่เฉพาะของ Ubuntu จริงๆแล้ว C-compilers ทั้งหมดที่ฉันรู้จักสนับสนุนการตั้งค่าสถานะเหล่านั้น
ใน Ubuntu /usr/include
พวกเขาจะพบใน
/usr/include
อยู่ใน ไบนารีที่เกิดขึ้นจริงสำหรับห้องสมุดจะไม่ถูกเก็บไว้ที่นั่น ส่วนหัวอาจได้รับการพิจารณาว่าเป็นส่วนหนึ่งของไลบรารี แต่จะต้องติดตั้งแยกต่างหากและใช้เพื่อคอมไพล์โปรแกรมที่ใช้ไลบรารี เมื่อโปรแกรมที่ใช้ไลบรารีได้รับการรวบรวมแล้วก็ไม่จำเป็นต้องใช้ไฟล์ส่วนหัวอีกต่อไป