การทำความเข้าใจคำสั่ง Linux: Ar

โปรแกรม GNU ar สร้าง , แก้ไขและคัดลอกจากคลัง ไฟล์ที่เก็บถาวร คือไฟล์เดียวที่เก็บ ไฟล์ อื่น ๆ ไว้ ในโครงสร้างซึ่งทำให้สามารถเรียกค้นไฟล์แต่ละไฟล์ (เรียกว่า สมาชิก ของไฟล์เก็บถาวร)

ภาพรวม

เนื้อหาไฟล์โหมด (สิทธิ์) เวลาประทับเจ้าของและกลุ่มจะถูกเก็บรักษาไว้ในที่เก็บข้อมูลและสามารถเรียกคืนข้อมูลเมื่อดึงข้อมูล

GNU ar สามารถเก็บข้อมูลที่เก็บไว้ซึ่งสมาชิกมีชื่อยาว ๆ ก็ได้ อย่างไรก็ตามขึ้นอยู่กับว่า ar ถูกกำหนดค่าไว้ในระบบของคุณอาจจำกัดความจำกัดความยาวของชื่อสมาชิกสำหรับความเข้ากันได้กับรูปแบบที่จัดเก็บไว้ด้วยเครื่องมืออื่น ๆ ถ้ามีอยู่ขีด จำกัด คือ 15 ตัวอักษร (ทั่วไปสำหรับรูปแบบที่เกี่ยวข้องกับ a.out) หรือ 16 ตัวอักษร (รูปแบบทั่วไปของ coff)

ar ถือว่าเป็นโปรแกรมอรรถประโยชน์แบบไบนารีเนื่องจากที่เก็บถาวรของประเภทนี้มักใช้เป็น ไลบรารี ที่ต้องใช้โปรแกรมย่อยที่จำเป็นโดยทั่วไป

ar สร้างดัชนีกับสัญลักษณ์ที่กำหนดไว้ในโมดูลอ็อบเจ็กต์ที่ relocatable ใน archive เมื่อคุณระบุ modifier s เมื่อสร้างดัชนีนี้จะได้รับการอัปเดตในที่เก็บเมื่อใดก็ตามที่ ar ทำการเปลี่ยนแปลงเนื้อหา (บันทึกสำหรับการดำเนินการอัพเดต q ) การจัดเก็บด้วยดัชนีดังกล่าวจะเพิ่มความเร็วในการเชื่อมโยงไปยังไลบรารีและช่วยให้รูทีนในห้องสมุดสามารถเรียกใช้ซึ่งกันและกันได้โดยไม่คำนึงถึงตำแหน่งในที่จัดเก็บ

คุณสามารถใช้ nm -s หรือ nm -print-armap เพื่อแสดงตารางดัชนีนี้ ถ้าเก็บข้อมูลขาดตารางรูปแบบอื่นของ ar ที่ เรียกว่า ranlib สามารถใช้เพื่อเพิ่มเฉพาะตารางได้

GNU ar ได้รับการออกแบบให้เข้ากันได้กับสิ่งอำนวยความสะดวกที่แตกต่างกันสองแห่ง คุณสามารถควบคุมกิจกรรมโดยใช้ตัวเลือกบรรทัดคำสั่งเช่น ar ต่างๆ ใน ระบบ Unix ; หรือหากคุณระบุบรรทัด คำสั่ง เดียวตัวเลือก -M คุณสามารถควบคุมได้ด้วยสคริปต์ที่จัดเตรียมผ่านทางอินพุตมาตรฐานเช่นโปรแกรมบรรณารักษ์ `` MRI ''

สรุป

ar [ -X32_64 ] [ - ] p [ mod [ relpos ] [ นับ ]] เก็บถาวร [ สมาชิก ... ]

ตัวเลือก

GNU ar ช่วยให้คุณสามารถผสมรหัสการดำเนินงาน p และ modifier flags mod ในลำดับใดก็ได้ภายในอาร์กิวเมนต์บรรทัดคำสั่งแรก

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

p keyletter ระบุว่าการดำเนินการใดที่จะดำเนินการ อาจเป็นข้อใดข้อหนึ่งต่อไปนี้ แต่คุณต้องระบุเพียงอย่างใดอย่างหนึ่งดังต่อไปนี้:

d

ลบ โมดูลออกจากที่จัดเก็บ ระบุชื่อของโมดูลที่จะลบเป็น สมาชิก ... ; ที่เก็บถาวรจะถูกแตะต้องหากคุณไม่ระบุไฟล์ที่จะลบ

หากคุณระบุตัวปรับปรุง v , ar จะแสดงรายการแต่ละโมดูลตามที่ถูกลบ

ม.

ใช้การดำเนินการนี้เพื่อ ย้าย สมาชิกในที่เก็บถาวร

การสั่งซื้อสมาชิกในคลังสามารถสร้างความแตกต่างในการเชื่อมโยงโปรแกรมโดยใช้ไลบรารีถ้ามีการกำหนดสัญลักษณ์ไว้ในมากกว่าหนึ่งสมาชิก

หากไม่มีการใช้ตัวแก้ไขใด ๆ กับ "m" สมาชิกที่คุณตั้งชื่อไว้ในอาร์กิวเมนต์ สมาชิก จะถูกย้ายไปยัง จุดสิ้นสุด ของไฟล์จัดเก็บ คุณสามารถใช้ a , b หรือ i modifiers เพื่อย้ายไปยังสถานที่ที่ระบุแทนได้

พี

พิมพ์ ไฟล์ที่ระบุของไฟล์จัดเก็บลงในไฟล์เอาต์พุตมาตรฐาน ถ้าระบุ v modifier ให้แสดงชื่อสมาชิกก่อนที่จะคัดลอกเนื้อหาไปเป็นเอาต์พุตมาตรฐาน

หากคุณไม่ระบุอาร์กิวเมนต์ สมาชิก ไฟล์ทั้งหมดในไฟล์จัดเก็บจะถูกพิมพ์ออกมา

Q

ผนวกอย่างรวดเร็ว ; ในอดีตเพิ่ม สมาชิก ไฟล์ ... จนถึงจุดสิ้นสุดของ ไฟล์จัดเก็บข้อมูล โดยไม่ต้องตรวจสอบเพื่อแทนที่

ตัวปรับค่า a , b และ i ไม่มี ผลต่อการดำเนินการนี้ สมาชิกใหม่จะถูกวางไว้เสมอเมื่อสิ้นสุดการเก็บถาวร

ตัวปรับค่า v ทำให้รายการแต่ละไฟล์มีความต่อเนื่องกัน

เนื่องจากจุดของการดำเนินการนี้คือความเร็วดัชนีของตารางข้อมูลที่เก็บถาวรจะไม่ได้รับการอัพเดตแม้ว่าจะมีอยู่แล้วก็ตาม คุณสามารถใช้ s s หรือ ranlib อย่างชัดเจนเพื่อปรับปรุงดัชนีตารางสัญลักษณ์

อย่างไรก็ตามระบบที่แตกต่างกันมากเกินไปถือว่าผนวกใหม่สร้างดัชนีใหม่ดังนั้น GNU ar จึงใช้ "q" เป็นคำพ้องสำหรับ "r"

R

แทรก สมาชิก ไฟล์ ... ลงในที่ เก็บถาวร (พร้อมด้วยการ เปลี่ยน ) การดำเนินการนี้แตกต่างจาก q ว่าสมาชิกที่เคยอยู่ก่อนหน้านี้จะถูกลบออกถ้าชื่อของพวกเขาตรงกับที่เพิ่มเข้ามา

หากไม่มีไฟล์ใดชื่อ หนึ่ง ใน สมาชิก AR จะแสดงข้อความแสดงข้อผิดพลาดและไม่ทำให้สมาชิกใด ๆ ของที่เก็บถาวรตรงกับชื่อดังกล่าว

โดยค่าเริ่มต้นจะมีการเพิ่มสมาชิกใหม่ในตอนท้ายของไฟล์ แต่คุณอาจใช้ตัวปรับค่า A , B หรือ I เพื่อขอตำแหน่งเทียบกับสมาชิกที่มีอยู่

ตัวปรับค่า v ที่ ใช้กับการดำเนินการนี้จะแสดงบรรทัดของเอาต์พุตสำหรับแต่ละไฟล์ที่แทรกพร้อมกับตัวอักษร a หรือ r เพื่อระบุว่าไฟล์ถูกต่อท้าย (ไม่มีสมาชิกเก่าที่ถูกลบออก) หรือถูกแทนที่

เสื้อ

แสดง ตาราง แสดงเนื้อหาของที่ เก็บถาวร หรือไฟล์ที่อยู่ในรายการ สมาชิก ... ที่อยู่ในคลัง โดยปกติจะมีเฉพาะชื่อสมาชิกเท่านั้น ถ้าคุณต้องการดูโหมด (สิทธิ์) เวลาผู้เป็นเจ้าของกลุ่มและขนาดคุณสามารถร้องขอได้โดยระบุตัวแก้ไข v ด้วยเช่นกัน

หากคุณไม่ได้ระบุชื่อ สมาชิก ไฟล์ทั้งหมดในคลังจะปรากฏในรายการ

หากมีไฟล์มากกว่าหนึ่งไฟล์ที่มีชื่อเดียวกัน (เช่น fie ) ในไฟล์ archive (พูด BA ), ar t ba fie จะแสดงเฉพาะอินสแตนซ์แรกเท่านั้น เพื่อดูพวกเขาทั้งหมดคุณต้องขอรายชื่อที่สมบูรณ์ --- ในตัวอย่างของเรา ar t ba

x

ดึง สมาชิก (ชื่อ สมาชิก ) ออกจากที่เก็บถาวร คุณสามารถใช้ตัวแก้ไข v กับการดำเนินการนี้เพื่อขอให้ ar รายการแต่ละชื่อตามที่แยกออก

หากคุณไม่ได้ระบุ สมาชิก ไฟล์ทั้งหมดในไฟล์จะถูกแยกออก

หมายเลข modifiers ( mod ) อาจปฏิบัติตาม keyletter p เพื่อระบุรูปแบบการทำงานของการดำเนินการ:

เพิ่มไฟล์ใหม่ หลังจาก สมาชิกที่มีอยู่ในคลัง ถ้าคุณใช้ตัวแก้ไข a ชื่อของสมาชิกที่เก็บถาวรที่มีอยู่จะต้องเป็นอาร์กิวเมนต์ relpos ก่อนข้อกำหนดเกี่ยวกับการ เก็บถาวร

เพิ่มไฟล์ใหม่ ก่อน สมาชิกที่มีอยู่ในคลัง ถ้าคุณใช้ตัวแก้ไข b ชื่อของสมาชิกที่เก็บถาวรจะต้องมีอยู่เป็นอาร์กิวเมนต์ relpos ก่อนข้อกำหนดเกี่ยวกับการ เก็บถาวร (เช่นเดียวกับ i )

สร้าง ที่เก็บถาวร ที่ เก็บที่ ระบุจะถูกสร้างขึ้นเสมอหากไม่มีไฟล์ดังกล่าวเมื่อคุณขอรับการอัปเดต แต่คำเตือนจะถูกนำออกจนกว่าคุณจะระบุล่วงหน้าว่าคุณคาดว่าจะสร้างได้โดยใช้ตัวปรับแต่งนี้

ตัดชื่อชื่อในที่เก็บถาวร GNU ar โดยปกติจะอนุญาตให้ใช้ชื่อไฟล์ที่มีความยาวได้ นี้จะทำให้มันสร้างที่เก็บซึ่งไม่เข้ากันได้กับโปรแกรม ar พื้นเมืองในบางระบบ ถ้าเป็นข้อกังวลตัวปรับแต่ง f อาจถูกใช้เพื่อตัดชื่อไฟล์ออกเมื่อใส่ไว้ในที่จัดเก็บ

ผม

แทรกไฟล์ใหม่ ก่อน สมาชิกที่มีอยู่ของที่เก็บถาวร ถ้าคุณใช้ตัวแก้ไข i ชื่อของสมาชิกที่เก็บถาวรจะต้องมีอยู่เป็นอาร์กิวเมนต์ relpos ก่อนข้อกำหนดเกี่ยวกับการ เก็บถาวร (เช่นเดียวกับ )

ล.

ปรับปรุงนี้ได้รับการยอมรับ แต่ไม่ได้ใช้

ยังไม่มีข้อความ

ใช้พารามิเตอร์ นับ นี่ใช้ถ้ามีหลายรายการในที่เก็บที่มีชื่อเดียวกัน ดึงข้อมูลหรือลบการ นับ อินสแตนซ์ของชื่อที่ระบุจากที่จัดเก็บ

โอ

รักษาวันที่ เดิม ของสมาชิกเมื่อแยกออก หากคุณไม่ได้ระบุตัวแก้ไขนี้ไฟล์ที่สกัดจากที่เก็บจะถูกประทับด้วยเวลาของการสกัด

P

ใช้ชื่อเส้นทางแบบเต็มเมื่อจับคู่ชื่อในที่เก็บถาวร GNU ar ไม่สามารถสร้างที่เก็บถาวรโดยใช้ชื่อเส้นทางแบบเต็ม (ที่เก็บดังกล่าวไม่ใช่การร้องเรียน POSIX) แต่ผู้สร้างที่เก็บถาวรอื่น ๆ สามารถทำได้ ตัวเลือกนี้จะทำให้ GNU ar ตรงกับชื่อไฟล์โดยใช้ชื่อพา ธ ที่สมบูรณ์ซึ่งสามารถทำได้สะดวกเมื่อแยกไฟล์ออกจากที่เก็บถาวรที่สร้างโดยเครื่องมืออื่น

s

เขียนดัชนีอ็อบเจ็กต์ลงในไฟล์จัดเก็บหรืออัปเดตไฟล์ที่มีอยู่แม้ว่าจะไม่มีการเปลี่ยนแปลงใด ๆ กับที่จัดเก็บก็ตาม คุณสามารถใช้ค่าสถานะการปรับค่านี้กับการดำเนินการใด ๆ หรือเพียงอย่างเดียว การเรียกใช้ ar บนที่เก็บข้อมูลเทียบเท่ากับการรัน ranlib ในไฟล์

S

อย่าสร้างตารางสัญลักษณ์ที่เก็บถาวร ซึ่งสามารถเพิ่มความเร็วในการสร้างห้องสมุดขนาดใหญ่ในหลายขั้นตอน ไม่สามารถใช้ที่เก็บข้อมูลที่เป็นผลลัพธ์กับ linker ในการสร้างตารางสัญลักษณ์คุณต้องละเว้นการปรับปรุง S ในการดำเนินการครั้งล่าสุดของ ar หรือคุณต้องรัน ranlib ในที่เก็บข้อมูล

ยู

โดยปกติ ar r ... แทรกไฟล์ทั้งหมดที่อยู่ในคลัง หากคุณต้องการแทรก เฉพาะ ไฟล์ที่มีชื่อที่ใหม่กว่าสมาชิกที่มีชื่อเดียวกันให้ใช้ตัวปรับแต่งนี้ ปรับปรุง u สามารถใช้ได้เฉพาะกับการดำเนินการ r (แทนที่) โดยเฉพาะอย่างยิ่งการรวม qu ไม่ได้รับอนุญาตเนื่องจากการตรวจสอบ timestamps จะสูญเสียความได้เปรียบความเร็วใด ๆ จากการดำเนินงาน q .

โวลต์

ตัวแก้ไขนี้ร้องขอเวอร์ชัน verbose ของการดำเนินการ การดำเนินการจำนวนมากแสดง ข้อมูลเพิ่มเติม เช่นชื่อไฟล์ที่ประมวลผลเมื่อมีการเพิ่มตัวแก้ไข v ลง

V

ตัวแก้ไขนี้แสดงหมายเลขเวอร์ชันของ ar

ar ละเว้นตัวเลือกเริ่มต้นที่สะกดไว้ -X32_64 เพื่อใช้งานร่วมกับ AIX ลักษณะการทำงานที่เกิดจากตัวเลือกนี้คือค่าดีฟอลต์สำหรับ GNU ar . ar ไม่สนับสนุนตัวเลือกอื่น ๆ -X ; โดยเฉพาะอย่างยิ่งไม่สนับสนุน -X32 ซึ่งเป็นค่าเริ่มต้นสำหรับ AIX ar

สำคัญ: ใช้คำสั่ง man ( % man ) เพื่อดูว่าคำสั่งถูกใช้อย่างไรในคอมพิวเตอร์เครื่องใดเครื่องหนึ่งของคุณ