GoGPT Best VPN GoSearch

ไอคอน Fav ของ OnWorks

dpkg-gensymbols - ออนไลน์ใน Cloud

เรียกใช้ dpkg-gensymbols ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง dpkg-gensymbols ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


dpkg-gensymbols - สร้างไฟล์สัญลักษณ์ (ข้อมูลการพึ่งพาไลบรารีที่ใช้ร่วมกัน)

เรื่องย่อ


สัญลักษณ์ dpkg-gen [ตัวเลือก... ]

DESCRIPTION


สัญลักษณ์ dpkg-gen สแกนแผนผังการสร้างชั่วคราว (เดเบียน/tmp โดยค่าเริ่มต้น) เพื่อค้นหาไลบรารี
และสร้าง a สัญลักษณ์ ไฟล์อธิบายพวกเขา ไฟล์นี้ ถ้าไม่ว่าง จะถูกติดตั้ง
ในไดเร็กทอรีย่อย DEBIAN ของโครงสร้างการ build เพื่อให้รวมอยู่ในการควบคุม
ข้อมูลของแพ็คเกจ

เมื่อสร้างไฟล์เหล่านั้น จะใช้เป็นอินพุตไฟล์สัญลักษณ์บางไฟล์ที่
ผู้ดูแล ค้นหาไฟล์ต่อไปนี้ (และใช้ไฟล์แรกที่พบ):

· เดเบียน/แพ็คเกจ.สัญลักษณ์โค้ง

· เดเบียน/สัญลักษณ์โค้ง

· เดเบียน/แพ็คเกจ.สัญลักษณ์

· เดเบียน/สัญลักษณ์

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

เมื่อไฟล์สัญลักษณ์ที่สร้างขึ้นแตกต่างจากไฟล์ที่ผู้ดูแลให้มา สัญลักษณ์ dpkg-gen
จะพิมพ์ส่วนต่างระหว่างสองเวอร์ชัน นอกจากนี้หากความแตกต่างก็เช่นกัน
ที่สำคัญ มันจะล้มเหลวด้วยซ้ำ (คุณสามารถปรับแต่งความแตกต่างที่คุณสามารถทนได้
ดู -c ตัวเลือก)

การบำรุงรักษา สัญลักษณ์ ไฟล์


ไฟล์สัญลักษณ์มีประโยชน์จริง ๆ เฉพาะเมื่อสะท้อนถึงวิวัฒนาการของแพ็คเกจ
ผ่านหลายรุ่น ดังนั้นผู้ดูแลจึงต้องอัพเดททุกครั้งที่มีใหม่
มีการเพิ่มสัญลักษณ์เพื่อให้เวอร์ชันน้อยที่สุดที่เกี่ยวข้องตรงกับความเป็นจริง ความแตกต่าง
ที่มีอยู่ในบันทึกการสร้างสามารถใช้เป็นจุดเริ่มต้นได้ แต่ผู้ดูแล
นอกจากนี้ต้องตรวจสอบให้แน่ใจว่าพฤติกรรมของสัญลักษณ์เหล่านั้นไม่มีการเปลี่ยนแปลงใน
วิธีที่จะทำอะไรก็ได้โดยใช้สัญลักษณ์เหล่านั้นและเชื่อมโยงกับเวอร์ชันใหม่ หยุด
ทำงานกับรุ่นเก่า ในกรณีส่วนใหญ่ ส่วนต่างมีผลโดยตรงกับ
เดเบียน/แพ็คเกจ.symbols ไฟล์ ที่กล่าวว่าจำเป็นต้องมีการปรับแต่งเพิ่มเติม: มันคือ
แนะนำเช่นให้ปล่อยการแก้ไข Debian จากรุ่นขั้นต่ำเพื่อให้
backports ด้วยหมายเลขเวอร์ชันที่ต่ำกว่า แต่เวอร์ชันอัปสตรีมเดียวกันยังคงตอบสนอง
สร้างการพึ่งพา ถ้าแก้ไขเดเบียนไม่ได้เพราะสัญลักษณ์จริงๆ
ถูกเพิ่มโดยการเปลี่ยนแปลงเฉพาะของ Debian ดังนั้นควรต่อท้ายเวอร์ชันด้วย '~'

ก่อนใช้โปรแกรมแก้ไขใดๆ กับไฟล์สัญลักษณ์ ผู้ดูแลควรตรวจสอบอีกครั้งว่า
มันมีเหตุผล สัญลักษณ์สาธารณะไม่ควรหายไป ดังนั้นควรแก้ไขให้ดีที่สุดเท่านั้น
เพิ่มบรรทัดใหม่

โปรดทราบว่าคุณสามารถใส่ความคิดเห็นในไฟล์สัญลักษณ์: บรรทัดใดก็ได้ที่มี '#' เป็นอักขระตัวแรก
เป็นความคิดเห็น เว้นแต่จะขึ้นต้นด้วย '#include' (ดูหัวข้อ การใช้ รวมถึง). เส้น
เริ่มต้นด้วย '#MISSING:' เป็นความคิดเห็นพิเศษที่บันทึกสัญลักษณ์ที่หายไป

อย่าลืมตรวจสอบว่าจำเป็นต้องเพิ่มเวอร์ชันสัญลักษณ์เก่าหรือไม่ ไม่มีทาง
สัญลักษณ์ dpkg-gen สามารถเตือนเกี่ยวกับเรื่องนี้ สุ่มสี่สุ่มห้าใช้ความแตกต่างหรือสมมติว่ามี
ไม่มีอะไรเปลี่ยนแปลงหากไม่มีความแตกต่างโดยไม่ตรวจสอบการเปลี่ยนแปลงดังกล่าวอาจนำไปสู่
แพ็คเกจที่มีการขึ้นต่อกันแบบหลวม ๆ ที่อ้างว่าสามารถทำงานกับแพ็คเกจที่เก่ากว่าที่พวกเขาไม่สามารถทำได้
ทำงานกับ. สิ่งนี้จะแนะนำข้อบกพร่องที่หายากด้วยการอัพเกรด (บางส่วน)

การใช้ #บรรจุุภัณฑ์# การแทน
ในบางกรณีที่พบไม่บ่อย ชื่อของไลบรารีจะแตกต่างกันไปตามสถาปัตยกรรม หลีกเลี่ยง
hardcoding ชื่อของแพ็คเกจในไฟล์สัญลักษณ์ คุณสามารถใช้ marker #บรรจุุภัณฑ์#.
มันจะถูกแทนที่ด้วยชื่อแพ็คเกจจริงระหว่างการติดตั้งไฟล์สัญลักษณ์
ตรงกันข้ามกับ #มินเวอร์# เครื่องหมาย #บรรจุุภัณฑ์# จะไม่ปรากฏในไฟล์สัญลักษณ์ภายใน a
แพ็คเกจไบนารี

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

ข้อกำหนดแท็กมาก่อนชื่อสัญลักษณ์ (ไม่อนุญาตให้เว้นวรรคใน
ระหว่าง). เริ่มต้นด้วยวงเล็บเปิดเสมอ (, ลงท้ายด้วยวงเล็บปิด ) และ
ต้องมีอย่างน้อยหนึ่งแท็ก หลายแท็กคั่นด้วย | อักขระ. แต่ละแท็ก
สามารถเลือกมีค่าที่แยกจากชื่อแท็กโดย = อักขระ. แท็ก
ชื่อและค่าสามารถเป็นสตริงได้ตามอำเภอใจ ยกเว้นต้องไม่มีอักขระพิเศษใดๆ )
| = ตัวอักษร ชื่อสัญลักษณ์ตามข้อกำหนดแท็กสามารถเลือกได้ด้วย
ทั้ง ' or " อักขระเพื่อให้มีช่องว่างในนั้น แต่ถ้าไม่มีแท็ก
ระบุไว้สำหรับสัญลักษณ์ คำพูดจะถือว่าเป็นส่วนหนึ่งของชื่อสัญลักษณ์ที่ดำเนินต่อไป
จนถึงช่องว่างแรก

(tag1=ฉันถูกทำเครื่องหมาย|ชื่อแท็กพร้อมช่องว่าง)"tagged quoted symbol"@Base 1.0
(ตัวเลือก)tagged_unquoted_symbol@Base 1.0 1
untag_ symbol@Base 1.0

สัญลักษณ์แรกในตัวอย่างมีชื่อว่า แท็ก ที่ยกมา เครื่องหมาย และมีสองแท็ก: tag1 สีสดสวย
ความคุ้มค่า i am โดดเด่น และ แท็ก พร้อมชื่อ สีสดสวย ช่องว่าง ที่ไม่มีคุณค่า สัญลักษณ์ที่สองชื่อ
tag_unquoted_symbol ถูกแท็กด้วยแท็กชื่อ .เท่านั้น ไม่จำเป็น. สัญลักษณ์สุดท้ายคือ an
ตัวอย่างของสัญลักษณ์ที่ไม่ได้ติดแท็กปกติ

เนื่องจากแท็กสัญลักษณ์เป็นส่วนเสริมของ เด็บ-สัญลักษณ์(5) รูปแบบสามารถเป็นส่วนหนึ่งของ .เท่านั้น
ไฟล์สัญลักษณ์ที่ใช้ในแพ็คเกจต้นทาง (ไฟล์เหล่านั้นควรถูกมองว่าเป็นเทมเพลต
ใช้เพื่อสร้างไฟล์สัญลักษณ์ที่ฝังอยู่ในแพ็คเกจไบนารี) เมื่อไหร่
สัญลักษณ์ dpkg-gen ถูกเรียกโดยไม่มี -t ตัวเลือกมันจะส่งออกไฟล์สัญลักษณ์ที่เข้ากันได้
ไป เด็บ-สัญลักษณ์(5) รูปแบบ: มันประมวลผลสัญลักษณ์อย่างเต็มที่ตามข้อกำหนดของ
แท็กมาตรฐานและดึงแท็กทั้งหมดออกจากเอาต์พุต ในทางกลับกัน ในโหมดเทมเพลต
(-t) สัญลักษณ์และแท็กทั้งหมด (ทั้งแบบมาตรฐานและที่ไม่รู้จัก) จะถูกเก็บไว้ในเอาต์พุต
และเขียนในรูปแบบเดิมเมื่อโหลด

Standard เครื่องหมาย แท็ก
ไม่จำเป็น
สัญลักษณ์ที่ทำเครื่องหมายว่าเป็นทางเลือกสามารถหายไปจากห้องสมุดได้ตลอดเวลาและนั้น
จะไม่มีวันทำให้ สัญลักษณ์ dpkg-gen ที่จะล้มเหลว. อย่างไรก็ตามสัญลักษณ์เสริมหายไป
จะปรากฏอย่างต่อเนื่องเป็น MISSING ในส่วนต่างในการแก้ไขแพ็คเกจใหม่แต่ละครั้ง นี้
พฤติกรรมทำหน้าที่เป็นเครื่องเตือนใจสำหรับผู้ดูแลว่าสัญลักษณ์ดังกล่าวจะต้อง
ลบออกจากไฟล์สัญลักษณ์หรืออ่านแล้วในไลบรารี เมื่อสัญลักษณ์เสริม
ซึ่งก่อนหน้านี้ได้ประกาศเป็น MISSING ก็ปรากฏขึ้นอีกครั้งในการแก้ไขครั้งถัดไป
มันจะถูกอัปเกรดกลับเป็นสถานะ "ที่มีอยู่" ด้วยเวอร์ชันขั้นต่ำ
ไม่เปลี่ยนแปลง

แท็กนี้มีประโยชน์สำหรับสัญลักษณ์ที่เป็นส่วนตัวโดยที่การหายตัวไปไม่ได้
ทำให้ ABI แตก ตัวอย่างเช่น การสร้างอินสแตนซ์เทมเพลต C++ ส่วนใหญ่อยู่ในนี้
หมวดหมู่. เช่นเดียวกับแท็กอื่นๆ แท็กนี้อาจมีค่าตามอำเภอใจ: สามารถ
ใช้เพื่อระบุว่าเหตุใดจึงถือว่าสัญลักษณ์นี้เป็นทางเลือก

โค้ง=สถาปัตยกรรมรายการ
โค้งบิต =สถาปัตยกรรมบิต
อาร์คเอนเดียน=สถาปัตยกรรม endianness
แท็กเหล่านี้อนุญาตให้จำกัดชุดของสถาปัตยกรรมที่สัญลักษณ์คือ
ควรจะมีอยู่ ดิ โค้งบิต และ ปลายโค้ง รองรับแท็กตั้งแต่ dpkg
1.18.0. เมื่อรายการสัญลักษณ์ถูกอัพเดตด้วยสัญลักษณ์ที่ค้นพบใน
ห้องสมุด สัญลักษณ์เฉพาะส่วนโค้งทั้งหมดที่ไม่เกี่ยวข้องกับโฮสต์ปัจจุบัน
สถาปัตยกรรมได้รับการปฏิบัติราวกับว่าไม่มีอยู่จริง หากเป็นสัญลักษณ์เฉพาะโค้ง
ไม่มีการจับคู่สถาปัตยกรรมโฮสต์ปัจจุบันในไลบรารี ปกติ
ใช้ขั้นตอนสำหรับสัญลักษณ์ที่หายไปและอาจทำให้ สัญลักษณ์ dpkg-gen ที่จะล้มเหลว. บน
ในทางกลับกันหากพบสัญลักษณ์เฉพาะโค้งเมื่อไม่ควร
มีอยู่ (เนื่องจากสถาปัตยกรรมโฮสต์ปัจจุบันไม่อยู่ในแท็กหรือไม่
ตรงกับ endianness และ bits) ทำให้โค้งเป็นกลาง (เช่น arch, arch-bits
และแท็ก arch-endian จะลดลงและสัญลักษณ์จะปรากฏในส่วนต่างเนื่องจากสิ่งนี้
เปลี่ยนแปลง) แต่ก็ไม่ถือว่าเป็นของใหม่

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

รูปแบบของ สถาปัตยกรรมรายการ เหมือนกับที่ใช้ใน สร้างขึ้นอยู่กับ
ที่ดินของ เดเบียน / ควบคุม (ยกเว้นวงเล็บเหลี่ยมที่ล้อมรอบ []) ตัวอย่างเช่น
สัญลักษณ์แรกจากรายการด้านล่างจะพิจารณาเฉพาะใน alpha, any-amd64 และ
สถาปัตยกรรม ia64 อันที่สองบนสถาปัตยกรรม linux ในขณะที่สถาปัตยกรรมที่สาม
ทุกที่ยกเว้นบนอาร์เมล

(arch=alpha any-amd64 ia64)a_64bit_specific_ symbol@Base 1.0
(arch=linux-any)linux_specific_ symbol@Base 1.0
(arch=!armel) symbol_armel_does_not_have@Base 1.0

การขอ สถาปัตยกรรมบิต เป็นทั้ง 32 or 64.

(arch-bits=32)a_32bit_specific_ symbol@Base 1.0
(arch-bits=64)a_64bit_specific_ symbol@Base 1.0

การขอ สถาปัตยกรรม endianness เป็นทั้ง น้อย or ใหญ่.

(arch-endian=little)a_little_endian_specific_ symbol@Base 1.0
(arch-endian=big)a_big_endian_specific_ symbol@Base 1.0

ข้อจำกัดหลายข้อสามารถผูกมัดได้

(ส่วนโค้ง = 32 | ส่วนปลายโค้ง = เล็ก) a_32bit_le_ symbol@Base 1.0

ละเว้นบัญชีดำ
dpkg-gensymbols มีบัญชีดำภายในของสัญลักษณ์ที่ไม่ควรปรากฏใน
ไฟล์สัญลักษณ์เนื่องจากมักจะเป็นเพียงผลข้างเคียงของรายละเอียดการใช้งานของ
ห่วงโซ่เครื่องมือ ถ้าด้วยเหตุผลบางอย่าง คุณต้องการให้หนึ่งในสัญลักษณ์เหล่านั้นเป็น
รวมอยู่ในไฟล์สัญลักษณ์ คุณควรแท็กสัญลักษณ์ด้วย ละเว้นบัญชีดำ. มัน
อาจจำเป็นสำหรับไลบรารี toolchain ระดับต่ำ เช่น libgcc

C ++ หมายถึง C ++ รูปแบบสัญลักษณ์ ดู การใช้ เครื่องหมาย รูปแบบ ส่วนย่อยด้านล่าง

ซิมเวอร์ หมายถึง ซิมเวอร์ (รุ่นสัญลักษณ์) รูปแบบสัญลักษณ์ ดู การใช้ เครื่องหมาย รูปแบบ
ส่วนย่อยด้านล่าง

นิพจน์ทั่วไป หมายถึง นิพจน์ทั่วไป รูปแบบสัญลักษณ์ ดู การใช้ เครื่องหมาย รูปแบบ ส่วนย่อยด้านล่าง

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

รูปแบบจะถือว่าหายไปหากไม่ตรงกับสัญลักษณ์ใด ๆ ในห้องสมุด โดยค่าเริ่มต้น
สิ่งนี้จะทำให้เกิด สัญลักษณ์ dpkg-gen ความล้มเหลวภายใต้ -c1 หรือระดับที่สูงขึ้น อย่างไรก็ตาม หาก
ไม่เป็นที่พึงปรารถนา รูปแบบอาจมีเครื่องหมาย ไม่จำเป็น แท็ก แล้วถ้ารูปแบบ
ไม่ตรงกับสิ่งใด จะปรากฏเฉพาะในส่วนต่างว่าขาดหายไป ยิ่งกว่านั้นเช่นใด ๆ
สัญลักษณ์ รูปแบบอาจจะจำกัดเฉพาะสถาปัตยกรรมที่มี โค้ง แท็ก โปรด
อ้างถึง Standard เครื่องหมาย แท็ก ส่วนย่อยด้านบนสำหรับข้อมูลเพิ่มเติม

รูปแบบเป็นส่วนเสริมของ เด็บ-สัญลักษณ์(5) รูปแบบจึงใช้ได้เฉพาะในสัญลักษณ์
แม่แบบไฟล์ ไวยากรณ์ข้อกำหนดรูปแบบไม่แตกต่างจาก a . ใด ๆ
สัญลักษณ์เฉพาะ อย่างไรก็ตาม ส่วนชื่อสัญลักษณ์ของข้อกำหนดเฉพาะทำหน้าที่เป็นนิพจน์ถึง
ประจัญบานกับ ชื่อ@รุ่น ของสัญลักษณ์ที่แท้จริง เพื่อแยกแยะระหว่าง
รูปแบบที่แตกต่างกัน โดยทั่วไปรูปแบบจะถูกแท็กด้วยแท็กพิเศษ

ในขณะที่ สัญลักษณ์ dpkg-gen รองรับรูปแบบพื้นฐานสามประเภท:

C ++
รูปแบบนี้แสดงโดย C ++ แท็ก มันจับคู่เฉพาะสัญลักษณ์ C ++ โดยแยกส่วน
ชื่อสัญลักษณ์ (ตามที่ปล่อยออกมาโดย C ++กรอง(1) ยูทิลิตี้). รูปแบบนี้มีประโยชน์มากสำหรับการจับคู่
สัญลักษณ์ที่ชื่อแหลกสลายอาจแตกต่างกันไปตามสถาปัตยกรรมที่แตกต่างกันในขณะที่
ชื่อที่ถูกหักหลังยังคงเหมือนเดิม กลุ่มหนึ่งของสัญลักษณ์ดังกล่าวคือ ไม่ใช่เสมือน ขอบคุณ ที่
มีออฟเซ็ตเฉพาะสถาปัตยกรรมที่ฝังอยู่ในชื่อที่แตกร้าว ตัวอย่างทั่วไป
ของกรณีนี้เป็นเสมือน destructor ซึ่งภายใต้การสืบทอดเพชรต้องการ
สัญลักษณ์ thunk เสมือน ตัวอย่างเช่น แม้ว่า _ZThn8_N3NSB6ClassDD1Ev@Base บน 32bit
สถาปัตยกรรมอาจจะเป็น _ZThn16_N3NSB6ClassDD1Ev@Base บน 64 บิตก็ได้
เข้ากับคนโสด C ++ รูปแบบ:

libdummy.so.1 libdummy1 #มินเวอร์#
[ ... ]
(c ++)" Thunk ที่ไม่ใช่เสมือนกับ NSB::ClassD::~ClassD()@Base" 1.0
[ ... ]

ชื่อที่ถูกแยกส่วนด้านบนสามารถรับได้โดยดำเนินการคำสั่งต่อไปนี้:

$ echo '_ZThn8_N3NSB6ClassDD1Ev@Base' | c++filt

โปรดทราบว่าถึงแม้ชื่อที่สับสนจะมีความหมายเฉพาะในห้องสมุดตามคำจำกัดความ แต่นี่ไม่ใช่
จำเป็นต้องเป็นจริงสำหรับชื่อที่ถูกแยกส่วน สัญลักษณ์จริงที่แตกต่างกันสองสามตัวอาจมี
ชื่อพ้องเดียวกัน ตัวอย่างเช่น กรณีที่มีสัญลักษณ์ thunk ที่ไม่ใช่เสมือนใน
การกำหนดค่าการสืบทอดที่ซับซ้อนหรือกับตัวสร้างและตัวทำลายส่วนใหญ่ (ตั้งแต่ g++
โดยทั่วไปจะสร้างสองสัญลักษณ์ที่แท้จริงสำหรับพวกเขา) อย่างไรก็ตาม เนื่องจากการชนเหล่านี้เกิดขึ้นบน
ระดับ ABI ไม่ควรลดคุณภาพของไฟล์สัญลักษณ์

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

libc.so.6 libc6 #มินเวอร์#
(ซิมเวอร์)GLIBC_2.0 2.0
[ ... ]
(ซิมเวอร์)GLIBC_2.7 2.7
เข้าถึง@GLIBC_2.0 2.2

สัญลักษณ์ทั้งหมดที่เกี่ยวข้องกับเวอร์ชัน GLIBC_2.0 และ GLIBC_2.7 จะทำให้เกิดน้อยที่สุด
รุ่น 2.0 และ 2.7 ตามลำดับ ยกเว้นสัญลักษณ์ เข้าถึง@GLIBC_2.0.
หลังจะนำไปสู่การพึ่งพาน้อยที่สุดใน libc6 เวอร์ชัน 2.2 แม้จะอยู่ใน
ขอบเขตของรูปแบบ "(symver)GLIBC_2.0" เนื่องจากสัญลักษณ์เฉพาะมีความสำคัญเหนือกว่า
รูปแบบ

โปรดทราบว่าในขณะที่รูปแบบสัญลักษณ์แทนแบบเก่า (แสดงโดย "*@version" ใน
ฟิลด์ชื่อสัญลักษณ์) ยังคงได้รับการสนับสนุน พวกเขาเลิกใช้แล้วโดยไวยากรณ์รูปแบบใหม่
"(symver | ตัวเลือก) เวอร์ชัน". ตัวอย่างเช่น "*@GLIBC_2.0 2.0" ควรเขียนเป็น
"(symver|ตัวเลือก)GLIBC_2.0 2.0" หากจำเป็นต้องใช้การทำงานแบบเดียวกัน

นิพจน์ทั่วไป
รูปแบบนิพจน์ทั่วไปแสดงด้วยเครื่องหมาย นิพจน์ทั่วไป แท็ก พวกเขาจับคู่โดย perl
นิพจน์ทั่วไปที่ระบุในช่องชื่อสัญลักษณ์ มีการจับคู่นิพจน์ทั่วไป
เหมือนเดิม เพราะฉะนั้นอย่าลืมเริ่มด้วย ^ ตัวอักษรหรืออาจตรงกับใดๆ
ส่วนหนึ่งของสัญลักษณ์ที่แท้จริง ชื่อ@รุ่น สตริง ตัวอย่างเช่น:

libdummy.so.1 libdummy1 #มินเวอร์#
(regex)"^mystack_.*@Base$" 1.0
(regex|ตัวเลือก)"ส่วนตัว" 1.0

สัญลักษณ์เช่น "mystack_new@Base", "mystack_push@Base", "mystack_pop@Base" เป็นต้น จะเป็น
จับคู่โดยรูปแบบแรกในขณะที่เช่น "ng_mystack_new@Base" จะไม่ทำ ที่สอง
รูปแบบจะตรงกับสัญลักษณ์ทั้งหมดที่มีสตริง "ส่วนตัว" ในชื่อและการจับคู่
จะได้รับมรดก ไม่จำเป็น แท็กจากรูปแบบ

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

(c++|regex)"^NSA::ClassA::Private::privmethod\d\(int\)@Base" 1.0
(regex|c++)N3NSA6ClassA7Private11privmethod\dEi@Base 1.0

จะจับคู่สัญลักษณ์ "_ZN3NSA6ClassA7Private11privmethod1Ei@Base" และ
"_ZN3NSA6ClassA7Private11privmethod2Ei@Base" เมื่อจับคู่รูปแบบแรกดิบ
สัญลักษณ์ถูกแยกส่วนก่อนเป็นสัญลักษณ์ C ++ จากนั้นชื่อที่ถูกแยกส่วนจะถูกจับคู่กับ
การแสดงออกปกติ ในทางกลับกัน เมื่อจับคู่รูปแบบที่สอง ปกติ
นิพจน์ตรงกับชื่อสัญลักษณ์ดิบ จากนั้นสัญลักษณ์จะถูกทดสอบว่าเป็น C++
หนึ่งโดยพยายามที่จะแยกส่วนมัน ความล้มเหลวของรูปแบบพื้นฐานใด ๆ จะส่งผลให้
ความล้มเหลวของรูปแบบทั้งหมด ดังนั้น ตัวอย่างเช่น
"__N3NSA6ClassA7Private11privmethod\dEi@Base" จะไม่ตรงกับรูปแบบใดรูปแบบหนึ่ง
เพราะมันไม่ใช่สัญลักษณ์ C++ ที่ถูกต้อง

โดยทั่วไป รูปแบบทั้งหมดจะถูกแบ่งออกเป็นสองกลุ่ม: นามแฝง (พื้นฐาน C ++ และ ซิมเวอร์) and
รูปแบบทั่วไป (นิพจน์ทั่วไป, การรวมกันของรูปแบบพื้นฐานหลายแบบทั้งหมด) การจับคู่ของพื้นฐาน
รูปแบบที่ใช้นามแฝงนั้นรวดเร็ว (O(1)) ในขณะที่รูปแบบทั่วไปคือ O(N) (N - รูปแบบทั่วไป
นับ) สำหรับแต่ละสัญลักษณ์ ดังนั้นจึงขอแนะนำว่าอย่าใช้รูปแบบทั่วไปมากเกินไป

เมื่อหลายรูปแบบตรงกับสัญลักษณ์จริงเดียวกัน นามแฝง (first C ++แล้ว ซิมเวอร์) คือ
ชอบมากกว่ารูปแบบทั่วไป รูปแบบทั่วไปจะถูกจับคู่ตามลำดับที่พบ
ในเทมเพลตไฟล์สัญลักษณ์จนสำเร็จครั้งแรก อย่างไรก็ตามโปรดทราบว่าคู่มือนั้น
ไม่แนะนำให้จัดลำดับรายการไฟล์เทมเพลตใหม่เพราะ สัญลักษณ์ dpkg-gen สร้าง
แตกต่างไปตามลำดับของตัวอักษรและตัวเลขของชื่อ

การใช้ รวมถึง
เมื่อชุดของสัญลักษณ์ที่ส่งออกแตกต่างกันระหว่างสถาปัตยกรรม อาจไม่มีประสิทธิภาพ
เพื่อใช้ไฟล์สัญลักษณ์เดียว ในกรณีเหล่านี้ คำสั่ง include อาจพิสูจน์ได้ว่ามีประโยชน์
ในสองสามวิธี:

· คุณสามารถแยกส่วนร่วมในไฟล์ภายนอกบางไฟล์และรวมไฟล์นั้นไว้ในไฟล์ของคุณ
แพ็คเกจ.สัญลักษณ์โค้ง ไฟล์โดยใช้คำสั่ง include ดังนี้:

#รวม "แพคเกจ.symbols.common"

· คำสั่ง include อาจถูกแท็กเหมือนสัญลักษณ์ใดๆ:

(แท็ก|...|tagN)#รวม "ไฟล์ที่จะรวม"

เป็นผลให้สัญลักษณ์ทั้งหมดรวมจาก ไฟล์ที่จะรวม จะถือว่าติดแท็ก
สีสดสวย แท็ก ... แท็กN โดยค่าเริ่มต้น. คุณสามารถใช้คุณสมบัตินี้เพื่อสร้างส่วนร่วม
แพ็คเกจไฟล์ .symbols ซึ่งรวมถึงไฟล์สัญลักษณ์เฉพาะสถาปัตยกรรม:

common_ symbol1@Base 1.0
(arch=amd64 ia64 alpha)#include "package.symbols.64bit"
(arch=!amd64 !ia64 !alpha)#include "package.symbols.32bit"
common_ symbol2@Base 1.0

ไฟล์สัญลักษณ์จะอ่านทีละบรรทัด และรวมถึงคำสั่งต่างๆ จะได้รับการประมวลผลทันที
พวกเขากำลังเผชิญ ซึ่งหมายความว่าเนื้อหาของไฟล์ที่รวมไว้สามารถแทนที่ใดๆ
เนื้อหาที่ปรากฏก่อนคำสั่งรวมและเนื้อหาใด ๆ หลังจาก
คำสั่งสามารถแทนที่สิ่งที่มีอยู่ในไฟล์ที่รวม สัญลักษณ์ใด ๆ (หรือแม้แต่
คำสั่ง #include อื่น) ในไฟล์ที่รวมสามารถระบุแท็กเพิ่มเติมหรือแทนที่
ค่าของแท็กที่สืบทอดมาในข้อกำหนดแท็ก อย่างไรก็ตาม ไม่มีทางที่จะ
สัญลักษณ์เพื่อลบแท็กที่สืบทอดมา

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

#include "libsomething1.symbols.common"
arch_specific_ symbol@Base 1.0

ดี ห้องสมุด การจัดการ
ห้องสมุดที่ได้รับการดูแลเป็นอย่างดีมีคุณสมบัติดังต่อไปนี้:

· API ของมันเสถียร (สัญลักษณ์สาธารณะจะไม่ถูกทิ้ง มีเพียงสัญลักษณ์สาธารณะใหม่เท่านั้น
เพิ่ม) และการเปลี่ยนแปลงในลักษณะที่เข้ากันไม่ได้เมื่อ SONAME เปลี่ยนแปลงเท่านั้น

· ตามหลักการแล้ว มันใช้การกำหนดเวอร์ชันสัญลักษณ์เพื่อให้เกิดความเสถียรของ ABI แม้จะมีการเปลี่ยนแปลงภายใน
และส่วนขยาย API;

· จะไม่ส่งออกสัญลักษณ์ส่วนตัว (สัญลักษณ์ดังกล่าวสามารถติดแท็กเป็นทางเลือกแทนวิธีแก้ปัญหา)

ในขณะที่รักษาไฟล์สัญลักษณ์ไว้ จะสังเกตเห็นลักษณะที่ปรากฏและการหายไปของ . ได้ง่าย
สัญลักษณ์ แต่การตรวจจับการเปลี่ยนแปลง API และ ABI ที่เข้ากันไม่ได้เป็นเรื่องยากกว่า ดังนั้น
ผู้ดูแลควรอ่านบันทึกการเปลี่ยนแปลงต้นน้ำอย่างละเอียดเพื่อค้นหากรณีที่กฎ
ของการจัดการห้องสมุดที่ดีถูกทำลาย หากพบปัญหาที่อาจเกิดขึ้น
ผู้เขียนต้นน้ำควรได้รับแจ้งเนื่องจากการแก้ไขต้นน้ำดีกว่า Debian . เสมอ
การแก้ปัญหาเฉพาะหน้า

OPTIONS


-Pแพ็คเกจสร้าง-dir
สแกน แพ็คเกจสร้าง-dir แทนเดเบียน/tmp

-pแพ็คเกจ
กำหนดชื่อแพ็คเกจ จำเป็นหากมีมากกว่าหนึ่งแพ็คเกจไบนารีอยู่ใน
debian/control (หรือหากไม่มีไฟล์ debian/control)

-vรุ่น
กำหนดเวอร์ชันของแพ็คเกจ ค่าเริ่มต้นเป็นเวอร์ชันที่แยกจาก
เดเบียน/บันทึกการเปลี่ยนแปลง จำเป็นถ้าถูกเรียกนอกทรีแพ็คเกจต้นทาง

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

-Iชื่อไฟล์
ใช้ ชื่อไฟล์ เป็นไฟล์อ้างอิงเพื่อสร้างไฟล์สัญลักษณ์ที่รวมอยู่ใน
แพ็คเกจนั้นเอง

-O[ชื่อไฟล์]
พิมพ์ไฟล์สัญลักษณ์ที่สร้างขึ้นไปยังเอาต์พุตมาตรฐานหรือ to ชื่อไฟล์ หากระบุไว้
มากกว่าที่จะ เดเบียน/tmp/เดเบียน/สัญลักษณ์ (หรือ แพ็คเกจสร้าง-dir/เดเบียน/สัญลักษณ์ if -P
ถูกนำมาใช้) ถ้า ชื่อไฟล์ ที่มีอยู่ก่อนแล้ว เนื้อหาจะใช้เป็นพื้นฐานสำหรับ
ไฟล์สัญลักษณ์ที่สร้างขึ้น คุณสามารถใช้คุณสมบัตินี้เพื่ออัปเดตไฟล์สัญลักษณ์เพื่อให้
มันตรงกับไลบรารีเวอร์ชันอัปสตรีมที่ใหม่กว่าของคุณ

-t เขียนไฟล์สัญลักษณ์ในโหมดเทมเพลตมากกว่ารูปแบบที่เข้ากันได้กับ
เด็บ-สัญลักษณ์(5). ความแตกต่างที่สำคัญคือในชื่อสัญลักษณ์โหมดเทมเพลตและ
แท็กถูกเขียนในรูปแบบดั้งเดิมซึ่งตรงกันข้ามกับชื่อสัญลักษณ์หลังการประมวลผล
ด้วยแท็กที่ถูกปล้นในโหมดความเข้ากันได้ นอกจากนี้ สัญลักษณ์บางตัวอาจเป็น
ละเว้นเมื่อเขียนมาตรฐาน เด็บ-สัญลักษณ์(5) ไฟล์ (ตาม tag
กฎการประมวลผล) ในขณะที่สัญลักษณ์ทั้งหมดจะถูกเขียนลงในเทมเพลตไฟล์สัญลักษณ์เสมอ

-c[0 4-]
กำหนดการตรวจสอบที่ต้องทำเมื่อเปรียบเทียบไฟล์สัญลักษณ์ที่สร้างขึ้นกับ template
ไฟล์ที่ใช้เป็นจุดเริ่มต้น โดยค่าเริ่มต้น ระดับคือ 1 ระดับที่เพิ่มขึ้นทำมากขึ้น
ตรวจสอบและรวมการตรวจสอบระดับล่างทั้งหมด ระดับ 0 ไม่เคยล้มเหลว ระดับ 1 ล้มเหลว
หากสัญลักษณ์บางอย่างหายไป ระดับ 2 ล้มเหลวหากมีสัญลักษณ์ใหม่
แนะนำ ระดับ 3 ล้มเหลวหากบางไลบรารีหายไป ระดับ 4 ล้มเหลวถ้าบางคน
ห้องสมุดได้รับการแนะนำ

ค่านี้สามารถแทนที่ได้โดยตัวแปรสภาพแวดล้อม
DPKG_GENSYMBOLS_CHECK_LEVEL.

-q เงียบไว้และอย่าสร้างความแตกต่างระหว่างไฟล์สัญลักษณ์ที่สร้างขึ้นและ
ไฟล์เทมเพลตที่ใช้เป็นจุดเริ่มต้นหรือแสดงคำเตือนเกี่ยวกับไลบรารีใหม่/ที่หายไป
หรือสัญลักษณ์ใหม่/สูญหาย ตัวเลือกนี้ปิดใช้งานเฉพาะข้อมูลออกแต่ไม่ปิด
ตรวจสอบตัวเอง (ดู -c ตัวเลือก)

-aโค้ง การสมมติ โค้ง เป็นสถาปัตยกรรมโฮสต์เมื่อประมวลผลไฟล์สัญลักษณ์ ใช้ตัวเลือกนี้เพื่อ
สร้างไฟล์สัญลักษณ์หรือส่วนต่างสำหรับสถาปัตยกรรมใด ๆ ที่มีไบนารีเป็น
มีอยู่แล้ว

-d เปิดใช้งานโหมดแก้ไขข้อบกพร่อง แสดงข้อความมากมายเพื่ออธิบายสิ่งที่ สัญลักษณ์ dpkg-gen
ไม่

-V เปิดใช้งานโหมด verbose ไฟล์สัญลักษณ์ที่สร้างขึ้นมีสัญลักษณ์ที่เลิกใช้แล้วเช่น
ความคิดเห็น นอกจากนี้ในโหมดเทมเพลต สัญลักษณ์รูปแบบจะตามด้วยความคิดเห็น
แสดงรายการสัญลักษณ์จริงที่ตรงกับรูปแบบ

-?, --ช่วยด้วย
แสดงข้อความการใช้งานและออก

--รุ่น
แสดงเวอร์ชันและออก

ใช้ dpkg-gensymbols ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

คำสั่ง Linux

Ad




×
โฆษณา
❤️ช้อป จอง หรือซื้อที่นี่โดยไม่เสียค่าใช้จ่าย ช่วยให้บริการต่างๆ ฟรี