ภาษาอังกฤษภาษาฝรั่งเศสสเปน

Ad


ไอคอน Fav ของ OnWorks

h8300-hitachi-coff-ld - ออนไลน์ในคลาวด์

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

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

โครงการ:

ชื่อ


ld - การใช้ LD, ตัวเชื่อมโยง GNU

เรื่องย่อ


แอลดี [ตัวเลือก] อ็อบเจกต์ไฟล์ ...

DESCRIPTION


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

ld ยอมรับไฟล์ภาษาคำสั่ง Linker ที่เขียนใน superset ของ Link Editor ของ AT&T
ไวยากรณ์ภาษาคำสั่ง เพื่อให้การควบคุมกระบวนการเชื่อมโยงที่ชัดเจนและสมบูรณ์

หน้านี้ไม่ได้อธิบายภาษาคำสั่ง เห็น ld ป้อนข้อมูลใน "ข้อมูล" หรือ
manual ld: ตัวเชื่อมโยง GNU สำหรับรายละเอียดทั้งหมดเกี่ยวกับภาษาคำสั่งและด้านอื่น ๆ
ของตัวเชื่อมโยง GNU

รุ่นนี้ ld ใช้ไลบรารี BFD วัตถุประสงค์ทั่วไปเพื่อดำเนินการกับไฟล์อ็อบเจ็กต์ นี้
ช่วยให้ ld เพื่ออ่าน รวม และเขียนไฟล์อ็อบเจ็กต์ในรูปแบบต่างๆ มากมาย---สำหรับ
เช่น COFF หรือ "a.out" รูปแบบที่แตกต่างกันอาจเชื่อมโยงกันเพื่อผลิตใด ๆ
ชนิดของไฟล์อ็อบเจ็กต์ที่มีอยู่

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

ตัวเชื่อมโยง GNU ld มีขึ้นเพื่อให้ครอบคลุมหลากหลายสถานการณ์และเพื่อให้เข้ากันได้
ให้มากที่สุดกับตัวเชื่อมโยงอื่นๆ เป็นผลให้คุณมีทางเลือกมากมายในการควบคุม
พฤติกรรม

OPTIONS


ตัวเชื่อมโยงรองรับตัวเลือกบรรทัดคำสั่งมากมาย แต่ในทางปฏิบัติจริงมีเพียงไม่กี่ตัวเลือก
ใช้ในบริบทใดโดยเฉพาะ ตัวอย่างเช่น การใช้ . บ่อยครั้ง ld คือการเชื่อมโยง
ไฟล์อ็อบเจ็กต์ Unix มาตรฐานบนระบบ Unix ที่รองรับมาตรฐาน ในระบบดังกล่าว ถึง
เชื่อมโยงไฟล์ "hello.o":

ฉันทำ /lib/crt0.o สวัสดี.o -lc

นี้บอก ld เพื่อสร้างไฟล์ชื่อ เอาท์พุต อันเป็นผลมาจากการเชื่อมโยงไฟล์
"/lib/crt0.o" กับ "hello.o" และไลบรารี่ "libc.a" ซึ่งจะมาจากมาตรฐาน
ค้นหาไดเรกทอรี (ดูการอภิปรายของ -l ตัวเลือกด้านล่าง)

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

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

โดยปกติ linker จะถูกเรียกใช้ด้วยไฟล์อ็อบเจ็กต์อย่างน้อยหนึ่งไฟล์ แต่คุณสามารถระบุ other
รูปแบบของไฟล์อินพุตไบนารีโดยใช้ -l, -Rและภาษาคำสั่งสคริปต์ ถ้า ไม่ ไบนารี
มีการระบุไฟล์อินพุตเลย ตัวเชื่อมโยงไม่สร้างเอาต์พุตใด ๆ และออก
ข่าวสาร ไม่ อินพุต ไฟล์.

หากตัวเชื่อมโยงไม่รู้จักรูปแบบของไฟล์อ็อบเจ็กต์ มันจะถือว่ามันเป็น
สคริปต์ตัวเชื่อมโยง สคริปต์ที่ระบุในลักษณะนี้จะเสริมสคริปต์ตัวเชื่อมโยงหลักที่ใช้สำหรับ
ลิงค์ (ทั้งสคริปต์ตัวเชื่อมโยงเริ่มต้นหรือที่ระบุโดยใช้ -T) นี้
คุณสมบัติอนุญาตให้ตัวเชื่อมโยงเชื่อมโยงกับไฟล์ที่ดูเหมือนจะเป็นวัตถุหรือ
เก็บถาวร แต่จริง ๆ แล้วเพียงกำหนดค่าสัญลักษณ์บางอย่างหรือใช้ "INPUT" หรือ "GROUP" to
โหลดวัตถุอื่นๆ โปรดทราบว่าการระบุสคริปต์ในลักษณะนี้เป็นเพียงการเสริม main
สคริปต์ตัวเชื่อมโยง; ใช้ -T ตัวเลือกเพื่อแทนที่สคริปต์ตัวเชื่อมโยงเริ่มต้นทั้งหมด

สำหรับตัวเลือกที่มีชื่อเป็นตัวอักษรเดี่ยว อาร์กิวเมนต์ของตัวเลือกต้องเป็นไปตาม
จดหมายตัวเลือกโดยไม่ต้องเว้นวรรคหรือกำหนดให้เป็นอาร์กิวเมนต์แยกกัน
ตามตัวเลือกที่ต้องการทันที

สำหรับตัวเลือกที่มีชื่อหลายตัวอักษร หนึ่งขีดหรือสองสามารถอยู่ข้างหน้า
ชื่อตัวเลือก; ตัวอย่างเช่น, -ร่องรอย-สัญลักษณ์ และ --trace-สัญลักษณ์ มีค่าเท่ากัน หมายเหตุ---นั่น
เป็นข้อยกเว้นประการหนึ่งสำหรับกฎนี้ ตัวเลือกตัวอักษรหลายตัวที่ขึ้นต้นด้วยตัวพิมพ์เล็ก 'o'
นำหน้าด้วยขีดกลางสองอันเท่านั้น ทั้งนี้เพื่อลดความสับสนกับ -o ตัวเลือก. ดังนั้น
เช่น -โอเมจิก ตั้งชื่อไฟล์เอาต์พุตเป็น มายากล แต่ทว่า --โอเมจิก ตั้งค่า NMAGIC
ตั้งค่าสถานะบนเอาต์พุต

อาร์กิวเมนต์ของตัวเลือกหลายตัวอักษรต้องแยกจากชื่อตัวเลือกด้วย an
เท่ากับเครื่องหมายหรือกำหนดให้เป็นอาร์กิวเมนต์แยกกันทันทีตามตัวเลือกที่
ต้องการพวกเขา ตัวอย่างเช่น, --trace-สัญลักษณ์ foo และ --trace- symbol=foo เทียบเท่า
ยอมรับตัวย่อที่ไม่ซ้ำกันของชื่อตัวเลือกหลายตัวอักษร

หมายเหตุ---หากตัวเชื่อมโยงถูกเรียกใช้ทางอ้อม ผ่านไดรเวอร์ของคอมไพเลอร์ (เช่น gcc) จากนั้น
ตัวเลือกบรรทัดคำสั่งของตัวเชื่อมโยงทั้งหมดควรนำหน้าด้วย -Wl (หรืออะไรก็ตามที่เห็นสมควร
สำหรับไดรเวอร์คอมไพเลอร์โดยเฉพาะ) ดังนี้:

gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup

นี่เป็นสิ่งสำคัญเพราะไม่เช่นนั้นโปรแกรมควบคุมคอมไพเลอร์อาจหยุด
ตัวเลือกตัวเชื่อมโยง ส่งผลให้ลิงก์เสีย

นี่คือตารางของสวิตช์บรรทัดคำสั่งทั่วไปที่ตัวเชื่อมโยง GNU ยอมรับ:

-aคีย์เวิร์ด
ตัวเลือกนี้รองรับความเข้ากันได้ของ HP/UX NS คีย์เวิร์ด อาร์กิวเมนต์ต้องเป็นหนึ่งใน
สตริง เก็บ, ที่ใช้ร่วมกัน,หรือ ผิดนัด. -aarchive เทียบเท่ากับ
-บีสแตติกและอีกสองคำหลักมีฟังก์ชันเทียบเท่ากับ -บีไดนามิค. นี้
สามารถใช้ตัวเลือกได้หลายครั้ง

-Aสถาปัตยกรรม
--สถาปัตยกรรม=สถาปัตยกรรม
ในรุ่นปัจจุบันของ ldตัวเลือกนี้มีประโยชน์สำหรับตระกูล Intel 960 ของ .เท่านั้น
สถาปัตยกรรม ในนั้น ld การกำหนดค่า สถาปัตยกรรม อาร์กิวเมนต์ระบุ
สถาปัตยกรรมเฉพาะในตระกูล 960 ทำให้มีการป้องกันและปรับเปลี่ยน
เส้นทางการค้นหาคลังเก็บถาวร

การเปิดตัวในอนาคตของ ld อาจรองรับการทำงานที่คล้ายคลึงกันสำหรับสถาปัตยกรรมอื่นๆ
ครอบครัว

-b รูปแบบการป้อนข้อมูล
--รูปแบบ=รูปแบบการป้อนข้อมูล
ld อาจได้รับการกำหนดค่าให้รองรับไฟล์อ็อบเจ็กต์มากกว่าหนึ่งประเภท ถ้าคุณ ld is
กำหนดค่าด้วยวิธีนี้ คุณสามารถใช้ -b ตัวเลือกเพื่อระบุรูปแบบไบนารีสำหรับอินพุต
ไฟล์อ็อบเจ็กต์ที่ตามตัวเลือกนี้ในบรรทัดคำสั่ง แม้ว่า ld มีการกำหนดค่า
เพื่อรองรับรูปแบบอ็อบเจ็กต์ทางเลือก คุณไม่จำเป็นต้องระบุสิ่งนี้ เช่น ld
ควรกำหนดค่าให้คาดว่าจะเป็นรูปแบบอินพุตเริ่มต้นในรูปแบบปกติที่สุดในแต่ละ
เครื่อง รูปแบบการป้อนข้อมูล เป็นสตริงข้อความ ชื่อของรูปแบบเฉพาะที่สนับสนุนโดย
ห้องสมุด BFD (คุณสามารถแสดงรายการรูปแบบไบนารีที่มีได้ด้วย ขยะ -i.)

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

รูปแบบเริ่มต้นนำมาจากตัวแปรสภาพแวดล้อม "GNUTARGET"

คุณยังสามารถกำหนดรูปแบบอินพุตจากสคริปต์ได้โดยใช้คำสั่ง "TARGET";

-c MRI-คำสั่งไฟล์
--mri-สคริปต์=MRI-คำสั่งไฟล์
เพื่อความเข้ากันได้กับตัวเชื่อมโยงที่ผลิตโดย MRI ld ยอมรับไฟล์สคริปต์ที่เขียนด้วย an
ภาษาคำสั่งทางเลือกที่จำกัด อธิบายไว้ในไฟล์สคริปต์ที่เข้ากันได้กับ MRI
ส่วนของเอกสาร GNU ld แนะนำไฟล์สคริปต์ MRI ด้วยตัวเลือก -c; ใช้
-T ตัวเลือกในการเรียกใช้สคริปต์ตัวเชื่อมโยงที่เขียนในวัตถุประสงค์ทั่วไป ld สคริปต์
ภาษา. ถ้า MRI-cmdfile ไม่ได้อยู่, ld ค้นหาในไดเร็กทอรีที่ระบุ
โดยใดๆ -L ตัวเลือก

-d
-กระแสตรง
-dp ทั้งสามตัวเลือกนี้เทียบเท่ากัน รองรับการใช้งานได้หลายรูปแบบ
กับลิงเกอร์อื่นๆ พวกเขากำหนดช่องว่างให้กับสัญลักษณ์ทั่วไปแม้ว่าเอาต์พุตที่ย้ายได้
ไฟล์ถูกระบุ (ด้วย -r). คำสั่งสคริปต์ "FORCE_COMMON_ALLOCATION" มี
ผลเดียวกัน

-e การเข้า
--ทางเข้า=การเข้า
ใช้ การเข้า เป็นสัญลักษณ์ที่ชัดเจนสำหรับการเริ่มต้นการทำงานของโปรแกรมของคุณ แทนที่จะเป็น
จุดเริ่มต้นเริ่มต้น หากไม่มีสัญลักษณ์ชื่อ การเข้า, ลิงเกอร์จะพยายาม
วิเคราะห์คำ การเข้า เป็นตัวเลขและใช้เป็นที่อยู่สำหรับป้อน (ตัวเลขจะเป็น
ตีความในฐาน 10; คุณอาจใช้คำนำหน้า 0x สำหรับฐาน 16 หรือนำหน้า 0 สำหรับฐาน
8)

--ไม่รวม-libs lib,lib...
ระบุรายการไลบรารีที่เก็บถาวรซึ่งสัญลักษณ์ไม่ควรเป็นแบบอัตโนมัติ
ส่งออก ชื่อไลบรารีอาจคั่นด้วยเครื่องหมายจุลภาคหรือทวิภาค ระบุ
"--exclude-libs ALL" ไม่รวมสัญลักษณ์ในไลบรารีเก็บถาวรทั้งหมดจากการส่งออกอัตโนมัติ
ตัวเลือกนี้ใช้ได้เฉพาะกับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยงและสำหรับELF
พอร์ตเป้าหมาย สำหรับ i386 PE สัญลักษณ์ที่แสดงอย่างชัดเจนในไฟล์ .def จะยังคงอยู่
ส่งออกโดยไม่คำนึงถึงตัวเลือกนี้ สำหรับพอร์ตเป้าหมายของ ELF สัญลักษณ์ที่ได้รับผลกระทบจากสิ่งนี้
ระบบจะถือว่าตัวเลือกถูกซ่อนไว้

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

หากคุณไม่ได้ใช้ตัวเลือกนี้ ตารางสัญลักษณ์ไดนามิกจะมีเพียง
สัญลักษณ์เหล่านั้นที่อ้างอิงโดยวัตถุไดนามิกที่กล่าวถึงในลิงค์

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

คุณยังสามารถใช้สคริปต์เวอร์ชันเพื่อควบคุมว่าควรเพิ่มสัญลักษณ์ใดลงใน
ตารางสัญลักษณ์แบบไดนามิกหากรูปแบบเอาต์พุตรองรับ ดูคำอธิบายของ
--version-สคริปต์ ใน @ref{VERSION}

-อี.บี เชื่อมโยงวัตถุ big-endian สิ่งนี้มีผลกับรูปแบบเอาต์พุตเริ่มต้น

-THE เชื่อมโยงวัตถุ little-endian สิ่งนี้มีผลกับรูปแบบเอาต์พุตเริ่มต้น

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

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

ตัวเลือกนี้อาจระบุได้มากกว่าหนึ่งครั้ง รายการ DT_AUXILIARY จะถูกสร้างขึ้น
ตามลำดับที่ปรากฏบนบรรทัดคำสั่ง

-F ชื่อ
--กรอง ชื่อ
เมื่อสร้างอ็อบเจ็กต์ที่ใช้ร่วมกันของ ELF ให้ตั้งค่าฟิลด์ DT_FILTER ภายในเป็นค่าที่ระบุ
ชื่อ. สิ่งนี้บอกไดนามิกลิงเกอร์ว่าตารางสัญลักษณ์ของอ็อบเจ็กต์ที่ใช้ร่วมกันซึ่ง
กำลังสร้างควรใช้เป็นตัวกรองในตารางสัญลักษณ์ของวัตถุที่ใช้ร่วมกัน
ชื่อ.

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

ตัวเชื่อมโยงที่เก่ากว่าบางตัวใช้ -F ตัวเลือกตลอดการคอมไพล์ toolchain สำหรับ
การระบุรูปแบบไฟล์อ็อบเจ็กต์สำหรับไฟล์อ็อบเจ็กต์อินพุตและเอาต์พุต ตัวเชื่อมโยง GNU
ใช้กลไกอื่นเพื่อการนี้: the -b, --รูปแบบ, --oformat ตัวเลือก
คำสั่ง "TARGET" ในสคริปต์ตัวเชื่อมโยง และตัวแปรสภาพแวดล้อม "GNUTARGET" GNU
ลิงเกอร์จะละเว้น -F ตัวเลือกเมื่อไม่ได้สร้างวัตถุที่ใช้ร่วมกันของ ELF

-ฟินิ ชื่อ
เมื่อสร้างอ็อบเจ็กต์ที่ปฏิบัติการได้หรือที่ใช้ร่วมกันของ ELF ให้เรียก NAME เมื่อไฟล์ปฏิบัติการหรือ
ยกเลิกการโหลดวัตถุที่ใช้ร่วมกันโดยการตั้งค่า DT_FINI เป็นที่อยู่ของฟังก์ชัน โดย
ค่าเริ่มต้น ตัวเชื่อมโยงใช้ "_fini" เป็นฟังก์ชันในการเรียก

-g ละเลย ให้ความเข้ากันได้กับเครื่องมืออื่น ๆ

-Gความคุ้มค่า
--gpsize=ความคุ้มค่า
กำหนดขนาดสูงสุดของวัตถุที่จะปรับให้เหมาะสมโดยใช้การลงทะเบียน GP เป็น ขนาด. นี้
มีความหมายสำหรับรูปแบบไฟล์อ็อบเจ็กต์เท่านั้น เช่น MIPS ECOFF ซึ่งรองรับการวาง
วัตถุขนาดใหญ่และขนาดเล็กในส่วนต่างๆ สิ่งนี้ถูกละเว้นสำหรับวัตถุอื่น
รูปแบบไฟล์

-hชื่อ
-โซนาเมะ=ชื่อ
เมื่อสร้างอ็อบเจ็กต์ที่ใช้ร่วมกันของ ELF ให้ตั้งค่าฟิลด์ DT_SONAME ภายในเป็นค่าที่ระบุ
ชื่อ. เมื่อโปรแกรมปฏิบัติการเชื่อมโยงกับอ็อบเจ็กต์ที่ใช้ร่วมกันซึ่งมีฟิลด์ DT_SONAME
จากนั้นเมื่อรันไฟล์เรียกทำงาน ไดนามิกลิงก์เกอร์จะพยายามโหลดไฟล์ที่แชร์
อ็อบเจ็กต์ที่ระบุโดยฟิลด์ DT_SONAME แทนที่จะใช้ชื่อไฟล์ที่กำหนดให้กับ
ลิงเกอร์

-i ดำเนินการลิงก์ที่เพิ่มขึ้น (เหมือนกับ option -r).

-ในนั้น ชื่อ
เมื่อสร้างอ็อบเจ็กต์ที่ปฏิบัติการได้หรือที่ใช้ร่วมกันของ ELF ให้เรียก NAME เมื่อไฟล์ปฏิบัติการหรือ
โหลดวัตถุที่ใช้ร่วมกันโดยการตั้งค่า DT_INIT เป็นที่อยู่ของฟังก์ชัน โดย
ค่าเริ่มต้น ตัวเชื่อมโยงใช้ "_init" เป็นฟังก์ชันในการเรียก

-lเก็บ
--ห้องสมุด=เก็บ
เพิ่มไฟล์เก็บถาวร เก็บ ไปยังรายการไฟล์ที่จะเชื่อมโยง ตัวเลือกนี้อาจใช้อะไรก็ได้
จำนวนครั้ง. ld จะค้นหารายการเส้นทางสำหรับการเกิด "libarchive.a" for
ทุกๆ เก็บ ระบุไว้

บนระบบที่รองรับไลบรารีที่แบ่งใช้ ld อาจค้นหาห้องสมุดด้วย
นามสกุลอื่นที่ไม่ใช่ ".a" โดยเฉพาะในระบบ ELF และ SunOS ld จะค้นหา a
ไดเร็กทอรีสำหรับไลบรารีที่มีนามสกุล ".so" ก่อนที่จะค้นหาด้วย an
นามสกุลของ ".a" ตามแบบแผน ส่วนขยาย ".so" หมายถึงไลบรารีที่ใช้ร่วมกัน

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

ดู -( ตัวเลือกสำหรับวิธีบังคับตัวเชื่อมโยงเพื่อค้นหาไฟล์เก็บถาวรหลาย ๆ ครั้ง

คุณสามารถแสดงรายการที่เก็บถาวรเดียวกันได้หลายครั้งบนบรรทัดคำสั่ง

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

-Lผู้ค้นหา
--library-เส้นทาง=ผู้ค้นหา
เพิ่มเส้นทาง ผู้ค้นหา สู่รายการเส้นทางที่ ld จะค้นหาไลบรารีที่เก็บถาวรและ
ld สคริปต์ควบคุม คุณสามารถใช้ตัวเลือกนี้ได้หลายครั้ง ไดเร็กทอรีคือ
ค้นหาตามลำดับที่ระบุไว้ในบรรทัดคำสั่ง ไดเรกทอรี
ที่ระบุในบรรทัดคำสั่งจะถูกค้นหาก่อนไดเร็กทอรีเริ่มต้น ทั้งหมด -L
ตัวเลือกใช้ได้กับทุกคน -l ตัวเลือก โดยไม่คำนึงถึงลำดับที่ตัวเลือกปรากฏ

If ผู้ค้นหา เริ่มต้นด้วย "=" จากนั้น "=" จะถูกแทนที่ด้วย ซิสรูท อุปสรรคที่
เส้นทางที่ระบุเมื่อกำหนดค่าตัวเชื่อมโยง

ชุดเริ่มต้นของเส้นทางที่ค้นหา (โดยไม่ได้ระบุด้วย -L) ขึ้นอยู่กับว่า
โหมดจำลอง ld กำลังใช้งาน และในบางกรณีก็เกี่ยวกับวิธีการกำหนดค่าด้วย

พาธยังสามารถระบุได้ในสคริปต์ลิงก์ด้วยคำสั่ง "SEARCH_DIR"
ไดเรกทอรีที่ระบุด้วยวิธีนี้จะถูกค้นหา ณ จุดที่สคริปต์ตัวเชื่อมโยง
ปรากฏในบรรทัดคำสั่ง

-mการแข่งขัน
เลียนแบบ การแข่งขัน ลิงเกอร์ คุณสามารถแสดงรายการการจำลองที่พร้อมใช้งานด้วย
--รายละเอียด or -V ตัวเลือก

ถ้า -m ไม่ได้ใช้ตัวเลือก การจำลองนำมาจาก "LDEMULATION"
ตัวแปรสภาพแวดล้อม หากมีการกำหนดไว้

มิฉะนั้น การจำลองเริ่มต้นจะขึ้นอยู่กับการกำหนดค่าตัวเชื่อมโยง

-M
--พิมพ์แผนที่
พิมพ์ลิงค์แผนที่ไปยังเอาต์พุตมาตรฐาน แผนที่ลิงค์ให้ข้อมูลเกี่ยวกับ
ลิงค์รวมถึงสิ่งต่อไปนี้:

* ตำแหน่งที่ไฟล์อ็อบเจ็กต์และสัญลักษณ์ถูกแมปลงในหน่วยความจำ

* วิธีการจัดสรรสัญลักษณ์ทั่วไป

* สมาชิกที่เก็บถาวรทั้งหมดรวมอยู่ในลิงค์โดยกล่าวถึงสัญลักษณ์ซึ่ง
ทำให้สมาชิกหอจดหมายเหตุถูกนำเข้ามา

-n
--nmagic
ปิดการจัดตำแหน่งหน้าของส่วนต่างๆ และทำเครื่องหมายผลลัพธ์เป็น "NMAGIC" ถ้าเป็นไปได้

-N
--โอเมจิก
ตั้งค่าส่วนข้อความและข้อมูลให้อ่านและเขียนได้ นอกจากนี้ ห้ามจัดหน้า
ส่วนข้อมูล และปิดใช้งานการลิงก์กับไลบรารีที่แชร์ ถ้ารูปแบบผลลัพธ์
รองรับตัวเลขเวทย์มนตร์สไตล์ Unix ทำเครื่องหมายผลลัพธ์เป็น "OMAGIC" หมายเหตุ: แม้ว่า a
อนุญาตให้ใช้ส่วนข้อความที่เขียนได้สำหรับเป้าหมาย PE-COFF ซึ่งไม่สอดคล้องกับ
ข้อกำหนดรูปแบบที่เผยแพร่โดย Microsoft

--ไม่มีโอเมจิก
ตัวเลือกนี้จะลบล้างผลกระทบส่วนใหญ่ของ -N ตัวเลือก. ตั้งค่าส่วนข้อความเป็น
เป็นแบบอ่านอย่างเดียว และบังคับให้ส่วนข้อมูลจัดแนวหน้า หมายเหตุ - ตัวเลือกนี้ไม่
ไม่เปิดใช้งานการลิงก์กับไลบรารีที่แชร์ ใช้ -บีไดนามิค สำหรับสิ่งนี้.

-o เอาท์พุต
--เอาท์พุท=เอาท์พุต
ใช้ เอาท์พุต เป็นชื่อรายการที่ผลิตโดย ld; ถ้าตัวเลือกนี้ไม่ใช่
ระบุชื่อ ออก ถูกใช้โดยค่าเริ่มต้น คำสั่งสคริปต์ "OUTPUT" ยังสามารถ
ระบุชื่อไฟล์ที่ส่งออก

-O ระดับ
If ระดับ เป็นค่าตัวเลขที่มากกว่าศูนย์ ld ปรับเอาต์พุตให้เหมาะสม นี้อาจจะ
ใช้เวลานานกว่ามากและควรเปิดใช้งานสำหรับรอบชิงชนะเลิศเท่านั้น
ไบนารี่.

-q
--emit-relocs
ปล่อยให้ส่วนการโยกย้ายและเนื้อหาในไฟล์ปฏิบัติการที่เชื่อมโยงอย่างสมบูรณ์ โพสต์ลิงค์
เครื่องมือวิเคราะห์และเพิ่มประสิทธิภาพอาจต้องการข้อมูลนี้เพื่อดำเนินการให้ถูกต้อง
การปรับเปลี่ยนปฏิบัติการ ส่งผลให้มีไฟล์ปฏิบัติการที่ใหญ่ขึ้น

ขณะนี้ตัวเลือกนี้รองรับบนแพลตฟอร์ม ELF เท่านั้น

-r
--ย้ายได้
สร้างเอาต์พุตที่ย้ายได้---เช่นสร้างไฟล์เอาต์พุตที่สามารถทำหน้าที่เป็น
อินพุตไปยัง ld. มักเรียกกันว่า เพียงบางส่วน การเชื่อมโยง. เป็นผลข้างเคียงในสภาพแวดล้อม
ที่รองรับตัวเลขเวทย์มนตร์ Unix มาตรฐานตัวเลือกนี้ยังตั้งค่าไฟล์เอาต์พุต
เลขมหัศจรรย์ของ "OMAGIC" หากไม่ได้ระบุตัวเลือกนี้ ไฟล์ที่แน่นอนคือ
ผลิต เมื่อเชื่อมโยงโปรแกรม C++ ตัวเลือกนี้ จะ ไม่ แก้ไขการอ้างอิงถึง
ตัวสร้าง; ในการทำเช่นนั้น ใช้ -เออ.

เมื่อไฟล์อินพุตไม่มีรูปแบบเดียวกับไฟล์เอาต์พุต ให้ทำการลิงก์บางส่วน
รองรับเฉพาะในกรณีที่ไฟล์อินพุตนั้นไม่มีการโยกย้ายใดๆ แตกต่าง
รูปแบบเอาต์พุตอาจมีข้อจำกัดเพิ่มเติม ตัวอย่างเช่นบางรูปแบบที่ใช้ "a.out"
ไม่รองรับการเชื่อมโยงบางส่วนกับไฟล์อินพุตในรูปแบบอื่นเลย

ตัวเลือกนี้ทำสิ่งเดียวกับ -i.

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

เพื่อความเข้ากันได้กับตัวเชื่อมโยง ELF อื่นๆ ถ้า -R ตัวเลือกตามด้วยไดเร็กทอรี
ชื่อ แทนที่จะเป็นชื่อไฟล์ จะถือว่าเป็น -rpath ตัวเลือก

-s
--แถบทั้งหมด
ละเว้นข้อมูลสัญลักษณ์ทั้งหมดจากไฟล์ที่ส่งออก

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

-t
--ติดตาม
พิมพ์ชื่อไฟล์อินพุตเป็น ld ประมวลผลพวกเขา

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

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

-เออ สำหรับอย่างอื่นที่ไม่ใช่โปรแกรม C++ ตัวเลือกนี้จะเทียบเท่ากับ -r: มันสร้าง
เอาต์พุตที่ย้ายได้---เช่น ไฟล์เอาต์พุตที่สามารถทำหน้าที่เป็นอินพุตไปยัง ld. เมื่อ
การเชื่อมโยงโปรแกรม C ++ -เออ ทำ แก้ไขการอ้างอิงถึงตัวสร้างไม่เหมือน -r. มันไม่
ใช้งานไม่ได้ -เออ ในไฟล์ที่ตัวเองเชื่อมโยงกับ -เออ; เมื่อ
สร้างตารางตัวสร้างแล้ว ไม่สามารถเพิ่มเข้าไปได้ ใช้ -เออ สุดท้ายเท่านั้น
ลิงค์บางส่วนและ -r สำหรับคนอื่นๆ.

--เอกลักษณ์[=วน]
สร้างส่วนเอาต์พุตแยกต่างหากสำหรับทุกส่วนอินพุตที่ตรงกัน วนหรือถ้า
ตัวแทนเสริม วน อาร์กิวเมนต์หายไป สำหรับทุกส่วนของอินพุตเด็กกำพร้า หนึ่ง
ส่วนเด็กกำพร้าเป็นส่วนที่ไม่ได้กล่าวถึงโดยเฉพาะในสคริปต์ตัวเชื่อมโยง คุณสามารถใช้สิ่งนี้
ตัวเลือกหลายครั้งบนบรรทัดคำสั่ง; ป้องกันการรวมอินพุตปกติ
ส่วนที่มีชื่อเดียวกัน แทนที่การกำหนดส่วนผลลัพธ์ในสคริปต์ตัวเชื่อมโยง

-v
--รุ่น
-V แสดงหมายเลขเวอร์ชันสำหรับ ld. -V ตัวเลือกยังแสดงรายการการจำลองที่รองรับ

-x
--ทิ้งทั้งหมด
ลบสัญลักษณ์ท้องถิ่นทั้งหมด

-X
--ทิ้ง-ชาวบ้าน
ลบสัญลักษณ์ท้องถิ่นชั่วคราวทั้งหมด สำหรับเป้าหมายส่วนใหญ่ นี่คือสัญลักษณ์ท้องถิ่นทั้งหมดที่
ชื่อขึ้นต้นด้วย L.

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

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

-Y เส้นทาง
เพิ่ม เส้นทาง ไปยังเส้นทางการค้นหาไลบรารีเริ่มต้น มีตัวเลือกนี้สำหรับ Solaris
ความเข้ากันได้

-z คีย์เวิร์ด
คำหลักที่รู้จักคือ:

คอมเบรล็อค
รวมส่วน reloc หลายส่วนและจัดเรียงเพื่อให้ค้นหาสัญลักษณ์แบบไดนามิก
แคชได้

defs
ไม่อนุญาตสัญลักษณ์ที่ไม่ได้กำหนดในไฟล์อ็อบเจ็กต์ สัญลักษณ์ที่ไม่ได้กำหนดในการแชร์
ห้องสมุดยังคงได้รับอนุญาต

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

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

โหลดfltr
ทำเครื่องหมายอ็อบเจ็กต์ที่ตัวกรองถูกประมวลผลทันทีที่รันไทม์

มัลเดฟ
อนุญาตให้ใช้คำจำกัดความได้หลายแบบ

ไม่มีคอมเบรล็อค
ปิดใช้งานการรวมหลายส่วน reloc

nocopyreloc
ปิดใช้งานการผลิตสำเนา relocs

nodedefaultlib
ทำเครื่องหมายวัตถุที่การค้นหาการพึ่งพาของวัตถุนี้จะละเว้นใดๆ
เส้นทางการค้นหาไลบรารีเริ่มต้น

โหนด
ทำเครื่องหมายว่าไม่ควรยกเลิกการโหลดวัตถุในขณะใช้งานจริง

พยักหน้า
ทำเครื่องหมายวัตถุที่ไม่มีให้ "dlopen"

พยักหน้า
ทำเครื่องหมายวัตถุไม่สามารถทิ้งโดย "dldump"

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

ที่มา
ทำเครื่องหมายวัตถุอาจมี $ORIGIN

คำหลักอื่นๆ จะถูกละเว้นสำหรับความเข้ากันได้ของ Solaris

-( หอจดหมายเหตุ -)
--กลุ่มเริ่มต้น หอจดหมายเหตุ --end-กลุ่ม
พื้นที่ หอจดหมายเหตุ ควรเป็นรายการไฟล์เก็บถาวร อาจเป็นไฟล์ที่ชัดเจน
ชื่อหรือ -l ตัวเลือก

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

การใช้ตัวเลือกนี้มีต้นทุนประสิทธิภาพที่สำคัญ ควรใช้เฉพาะเมื่อ
มีการอ้างอิงแบบวงกลมที่หลีกเลี่ยงไม่ได้ระหว่างเอกสารสำคัญสองฉบับขึ้นไป

--accept-unknown-input-arch
--no-accept-unknown-input-arch
บอกให้ลิงเกอร์ยอมรับไฟล์อินพุตที่สถาปัตยกรรมไม่สามารถรับรู้ได้ NS
สันนิษฐานว่าผู้ใช้รู้ว่ากำลังทำอะไรและตั้งใจจะเชื่อมโยง
ในไฟล์อินพุตที่ไม่รู้จักเหล่านี้ นี่เป็นพฤติกรรมเริ่มต้นของตัวเชื่อมโยงก่อนหน้านี้
ปล่อย 2.14 พฤติกรรมเริ่มต้นตั้งแต่รุ่น 2.14 เป็นต้นไปคือการปฏิเสธอินพุตดังกล่าว
ไฟล์และอื่น ๆ --accept-unknown-input-arch เพิ่มตัวเลือกเพื่อคืนค่า old
พฤติกรรม.

--ตามความจำเป็น
--ไม่จำเป็น
ตัวเลือกนี้มีผลกับแท็ก ELF DT_NEEDED สำหรับไลบรารีไดนามิกที่กล่าวถึงในคำสั่ง
บรรทัดหลัง --ตามความจำเป็น ตัวเลือก. โดยปกติ linker จะเพิ่มแท็ก DT_NEEDED สำหรับ
แต่ละไดนามิกไลบรารีที่กล่าวถึงในบรรทัดคำสั่ง ไม่ว่าไลบรารี่
มีความจำเป็นจริงๆ --ตามความจำเป็น ทำให้แท็ก DT_NEEDED ถูกปล่อยออกมาสำหรับ .เท่านั้น
ไลบรารี่ที่ตรงตามสัญลักษณ์อ้างอิงจากอ็อบเจกต์ปกติซึ่งไม่ได้กำหนดไว้
ณ จุดที่เชื่อมสัมพันธ์กับห้องสมุด --ไม่จำเป็น เรียกคืนค่าเริ่มต้น
พฤติกรรม.

--เพิ่มที่จำเป็น
--ไม่ต้องเพิ่ม
ตัวเลือกนี้ส่งผลต่อการรักษาไลบรารีไดนามิกจากแท็ก ELF DT_NEEDED ใน
ไลบรารีไดนามิกที่กล่าวถึงในบรรทัดคำสั่งหลัง the --ไม่ต้องเพิ่ม ตัวเลือก
โดยปกติ ตัวเชื่อมโยงจะเพิ่มแท็ก DT_NEEDED สำหรับแต่ละไลบรารีไดนามิกจาก DT_NEEDED
แท็ก --ไม่ต้องเพิ่ม ทำให้แท็ก DT_NEEDED ไม่ถูกปล่อยออกมาสำหรับไลบรารีเหล่านั้น
จากแท็ก DT_NEEDED --เพิ่มที่จำเป็น เรียกคืนพฤติกรรมเริ่มต้น

-ยืนยัน คีย์เวิร์ด
ตัวเลือกนี้ถูกละเว้นสำหรับความเข้ากันได้ของ SunOS

-บีไดนามิค
- ดี
-call_shared
ลิงก์กับไลบรารีไดนามิก สิ่งนี้มีความหมายเฉพาะบนแพลตฟอร์มที่แชร์
รองรับห้องสมุด โดยปกติตัวเลือกนี้จะเป็นค่าเริ่มต้นบนแพลตฟอร์มดังกล่าว NS
ตัวแปรต่างๆ ของตัวเลือกนี้มีไว้สำหรับความเข้ากันได้กับระบบต่างๆ คุณอาจ
ใช้ตัวเลือกนี้หลายครั้งบนบรรทัดคำสั่ง: มีผลกับการค้นหาไลบรารี่สำหรับ
-l ตัวเลือกที่ตามมา

-กลุ่มบี
ตั้งค่าสถานะ "DF_1_GROUP" ในรายการ "DT_FLAGS_1" ในส่วนไดนามิก นี้
ทำให้ตัวเชื่อมโยงรันไทม์จัดการการค้นหาในวัตถุนี้และการขึ้นต่อกันเป็น
ดำเนินการภายในกลุ่มเท่านั้น --unresolved- symbols=report-all เป็นนัย นี้
ตัวเลือกมีความหมายเฉพาะบนแพลตฟอร์ม ELF ที่รองรับไลบรารีที่ใช้ร่วมกัน

-บีสแตติก
-dn
-ไม่แชร์
-คงที่
อย่าลิงก์กับไลบรารีที่แชร์ สิ่งนี้มีความหมายเฉพาะบนแพลตฟอร์มที่
รองรับไลบรารีที่ใช้ร่วมกัน ตัวแปรต่างๆ ของตัวเลือกนี้มีไว้สำหรับ
เข้ากันได้กับระบบต่างๆ คุณสามารถใช้ตัวเลือกนี้ได้หลายครั้งบน
บรรทัดคำสั่ง: มีผลกับการค้นหาห้องสมุด -l ตัวเลือกที่ตามมา นี้
ตัวเลือกยังหมายถึง --unresolved- symbols=report-all.

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

--ตรวจสอบส่วน
--no-ตรวจสอบส่วน
ถามลิงเกอร์ ไม่ เพื่อตรวจสอบที่อยู่ของส่วนหลังจากที่ได้รับมอบหมายเพื่อดูว่า
มีการทับซ้อนกัน โดยปกติลิงเกอร์จะทำการตรวจสอบนี้ และหากพบสิ่งใด
ทับซ้อนกันจะสร้างข้อความแสดงข้อผิดพลาดที่เหมาะสม ลิงเกอร์รู้เรื่อง และ
ให้ค่าเผื่อสำหรับส่วนในการซ้อนทับ สามารถเรียกคืนพฤติกรรมเริ่มต้นได้
โดยใช้สวิตช์บรรทัดคำสั่ง --ตรวจสอบส่วน.

--cref
แสดงตารางอ้างอิงโยง หากมีการสร้างไฟล์แมปลิงเกอร์ เครื่องหมายกากบาท
ตารางอ้างอิงถูกพิมพ์ไปยังไฟล์แผนที่ มิฉะนั้นจะพิมพ์บนมาตรฐาน
เอาท์พุต

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

--no-define-ธรรมดา
ตัวเลือกนี้ยับยั้งการกำหนดที่อยู่ให้กับสัญลักษณ์ทั่วไป บท
คำสั่ง "INHIBIT_COMMON_ALLOCATION" มีผลเช่นเดียวกัน

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

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

--ดีมาเกิล[=สไตล์]
--ไม่มี-demangle
ตัวเลือกเหล่านี้ควบคุมว่าจะแยกชื่อสัญลักษณ์ในข้อความแสดงข้อผิดพลาดและอื่น ๆ หรือไม่
เอาท์พุท เมื่อตัวเชื่อมโยงถูกบอกให้แยกส่วน มันพยายามนำเสนอชื่อสัญลักษณ์ใน a
แฟชั่นที่อ่านได้: มันตัดเครื่องหมายขีดล่างชั้นนำหากถูกใช้โดยไฟล์อ็อบเจ็กต์
รูปแบบและแปลงชื่อสัญลักษณ์ C ++ ที่บิดเบี้ยวเป็นชื่อที่ผู้ใช้อ่านได้ แตกต่าง
คอมไพเลอร์มีรูปแบบการจัดการที่แตกต่างกัน อาร์กิวเมนต์รูปแบบ demanling ที่เป็นตัวเลือกสามารถ
ใช้เพื่อเลือกรูปแบบการแยกส่วนที่เหมาะสมสำหรับคอมไพเลอร์ของคุณ ลิงเกอร์จะ
demangle โดยค่าเริ่มต้นเว้นแต่ตัวแปรสภาพแวดล้อม COLLECT_NO_DEMANGLE ถูกตั้งค่า เหล่านี้
อาจใช้ตัวเลือกเพื่อแทนที่ค่าเริ่มต้น

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

--ร้ายแรง-คำเตือน
ถือว่าคำเตือนทั้งหมดเป็นข้อผิดพลาด

--force-exe-คำต่อท้าย
ตรวจสอบให้แน่ใจว่าไฟล์เอาต์พุตมีส่วนต่อท้าย .exe

หากไฟล์เอาท์พุตที่เชื่อมโยงอย่างสมบูรณ์ซึ่งสร้างสำเร็จแล้วไม่มี ".exe" หรือ ".dll"
คำต่อท้าย ตัวเลือกนี้บังคับให้ตัวเชื่อมโยงคัดลอกไฟล์เอาต์พุตไปยังชื่อเดียวกัน
ด้วยคำต่อท้าย ".exe" ตัวเลือกนี้มีประโยชน์เมื่อใช้ยูนิกซ์ makefiles ที่ไม่ได้แก้ไขบน a
โฮสต์ Microsoft Windows เนื่องจาก Windows บางเวอร์ชันจะไม่เรียกใช้อิมเมจเว้นแต่ว่า
ลงท้ายด้วย ".exe"

--no-gc-ส่วน
--gc-ส่วน
เปิดใช้งานการรวบรวมขยะของส่วนอินพุตที่ไม่ได้ใช้ ถูกละเลยในเป้าหมายที่ทำ
ไม่สนับสนุนตัวเลือกนี้ ตัวเลือกนี้เข้ากันไม่ได้กับ -r. พฤติกรรมเริ่มต้น
(ของการไม่ดำเนินการรวบรวมขยะนี้) สามารถกู้คืนได้โดยระบุ
--no-gc-ส่วน บนบรรทัดคำสั่ง

--ช่วยด้วย
พิมพ์สรุปตัวเลือกบรรทัดคำสั่งบนเอาต์พุตมาตรฐานและออก

--เป้าหมาย-ช่วยเหลือ
พิมพ์สรุปตัวเลือกเฉพาะของเป้าหมายทั้งหมดบนเอาต์พุตมาตรฐานและการออก

-แผนที่ ไฟล์แผนที่
พิมพ์ลิงค์แผนที่ไปยังไฟล์ ไฟล์แผนที่. ดูคำอธิบายของ -M ตัวเลือกด้านบน

--ไม่เก็บความทรงจำ
ld ปกติจะปรับความเร็วให้เหมาะสมกว่าการใช้หน่วยความจำโดยแคชตารางสัญลักษณ์ของ
ไฟล์อินพุตในหน่วยความจำ ตัวเลือกนี้บอก ld เพื่อเพิ่มประสิทธิภาพการใช้หน่วยความจำแทน by
อ่านตารางสัญลักษณ์ซ้ำตามความจำเป็น นี่อาจจำเป็นถ้า ld หมด
พื้นที่หน่วยความจำขณะเชื่อมโยงไฟล์ปฏิบัติการขนาดใหญ่

--ไม่-ไม่ได้กำหนด
-z defs
รายงานการอ้างอิงสัญลักษณ์ที่ไม่ได้รับการแก้ไขจากไฟล์อ็อบเจ็กต์ปกติ นี้จะทำแม้ว่า
ตัวเชื่อมโยงกำลังสร้างไลบรารีที่ใช้ร่วมกันที่ไม่ใช่สัญลักษณ์ สวิตช์
--[ไม่-]allow-shlib-undefined ควบคุมพฤติกรรมการรายงานที่ไม่ได้รับการแก้ไข
ข้อมูลอ้างอิงที่พบในไลบรารีที่แชร์ซึ่งเชื่อมโยงอยู่

--allow-หลายคำจำกัดความ
-z มัลเดฟ
โดยปกติเมื่อมีการกำหนดสัญลักษณ์หลายครั้ง ตัวเชื่อมโยงจะรายงานอันตรายถึงชีวิต
ข้อผิดพลาด. ตัวเลือกเหล่านี้อนุญาตให้ใช้คำจำกัดความได้หลายแบบและจะใช้คำจำกัดความแรก

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

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

--no-undefined-รุ่น
โดยปกติเมื่อสัญลักษณ์มีเวอร์ชันที่ไม่ได้กำหนด ตัวเชื่อมโยงจะไม่สนใจมัน นี้
ตัวเลือกไม่อนุญาตให้ใช้สัญลักษณ์ที่มีเวอร์ชันที่ไม่ได้กำหนดและจะออกข้อผิดพลาดร้ายแรง
แทน.

--default-symver
สร้างและใช้เวอร์ชันสัญลักษณ์เริ่มต้น (soname) สำหรับสัญลักษณ์ที่ส่งออกที่ไม่มีเวอร์ชัน

--default-นำเข้า-symver
สร้างและใช้เวอร์ชันสัญลักษณ์เริ่มต้น (soname) สำหรับสัญลักษณ์นำเข้าที่ไม่มีเวอร์ชัน

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

--no-ทั้งเก็บถาวร
ปิดเอฟเฟกต์ของ --ทั้งคลัง ตัวเลือกสำหรับไฟล์เก็บถาวรที่ตามมา

--noinhibit-exec
เก็บไฟล์เอาต์พุตที่เรียกใช้งานได้ทุกครั้งที่ยังใช้งานได้ โดยปกติลิงเกอร์
จะไม่สร้างไฟล์เอาต์พุตหากพบข้อผิดพลาดระหว่างกระบวนการลิงก์ มัน
ออกโดยไม่เขียนไฟล์เอาท์พุตเมื่อเกิดปัญหาใดๆ ขึ้น

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

--oformat รูปแบบการส่งออก
ld อาจได้รับการกำหนดค่าให้รองรับไฟล์อ็อบเจ็กต์มากกว่าหนึ่งประเภท ถ้าคุณ ld is
กำหนดค่าด้วยวิธีนี้ คุณสามารถใช้ --oformat ตัวเลือกเพื่อระบุรูปแบบไบนารีสำหรับ
ไฟล์อ็อบเจ็กต์เอาต์พุต แม้ว่า ld ได้รับการกำหนดค่าเพื่อรองรับอ็อบเจ็กต์ทางเลือก
รูปแบบ คุณไม่จำเป็นต้องระบุสิ่งนี้ เนื่องจาก ld ควรกำหนดค่าให้ผลิต
เป็นรูปแบบเอาต์พุตเริ่มต้นซึ่งเป็นรูปแบบปกติที่สุดในแต่ละเครื่อง รูปแบบการส่งออก คือ
สตริงข้อความ ชื่อของรูปแบบเฉพาะที่สนับสนุนโดยไลบรารี BFD (คุณสามารถ
แสดงรายการรูปแบบไบนารีที่มีด้วย ขยะ -i.) คำสั่งสคริปต์
"OUTPUT_FORMAT" ยังสามารถระบุรูปแบบเอาต์พุตได้ แต่ตัวเลือกนี้จะแทนที่รูปแบบดังกล่าว

-พาย
--pic-ปฏิบัติการ
สร้างตำแหน่งปฏิบัติการอิสระ ขณะนี้รองรับเฉพาะ ELF
แพลตฟอร์ม ตำแหน่ง executables อิสระคล้ายกับไลบรารีที่ใช้ร่วมกันในนั้น
พวกมันถูกย้ายโดยไดนามิกลิงค์เกอร์ไปยังที่อยู่เสมือนที่ระบบปฏิบัติการเลือก
พวกเขา (ซึ่งสามารถแตกต่างกันระหว่างการวิงวอน) เช่นเดียวกับไฟล์ปฏิบัติการที่เชื่อมโยงแบบไดนามิกทั่วไป
พวกเขาสามารถดำเนินการได้และสัญลักษณ์ที่กำหนดไว้ในปฏิบัติการไม่สามารถแทนที่โดย
ห้องสมุดที่ใช้ร่วมกัน

-qmagic
ตัวเลือกนี้ถูกละเว้นสำหรับความเข้ากันได้ของ Linux

-คิว ตัวเลือกนี้ถูกละเว้นสำหรับความเข้ากันได้ของ SVR4

--ผ่อนคลาย
ตัวเลือกที่มีเอฟเฟกต์ขึ้นอยู่กับเครื่อง ตัวเลือกนี้ได้รับการสนับสนุนเพียงไม่กี่
เป้าหมาย

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

ในบางแพลตฟอร์ม เวลาลิงก์เหล่านี้ การปรับให้เหมาะสมทั่วโลกอาจทำให้การดีบักเชิงสัญลักษณ์ของ
ผลลัพธ์ที่ปฏิบัติการเป็นไปไม่ได้ เป็นที่ทราบกันดีว่าเป็นกรณีของมัตสึชิตะ
โปรเซสเซอร์ตระกูล MN10200 และ MN10300

บนแพลตฟอร์มที่ไม่รองรับ --ผ่อนคลาย เป็นที่ยอมรับ แต่ละเลย

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

--retain-สัญลักษณ์-ไฟล์ ทำ ไม่ ละทิ้งสัญลักษณ์ที่ไม่ได้กำหนดหรือสัญลักษณ์ที่จำเป็นสำหรับ
การย้ายถิ่นฐาน

ระบุได้เฉพาะ --retain-สัญลักษณ์-ไฟล์ ครั้งหนึ่งในบรรทัดคำสั่ง มันแทนที่ -s
และ -S.

-rpath dir
เพิ่มไดเร็กทอรีในพาธการค้นหาไลบรารีรันไทม์ ใช้เมื่อเชื่อมโยงเอลฟ์
ปฏิบัติการได้ด้วยวัตถุที่ใช้ร่วมกัน ทั้งหมด -rpath อาร์กิวเมนต์จะถูกต่อและส่งต่อไปยัง
ตัวเชื่อมโยงรันไทม์ ซึ่งใช้พวกมันเพื่อค้นหาอ็อบเจ็กต์ที่ใช้ร่วมกัน ณ รันไทม์ NS -rpath
ตัวเลือกยังใช้เมื่อค้นหาวัตถุที่ใช้ร่วมกันซึ่งจำเป็นสำหรับวัตถุที่ใช้ร่วมกัน
รวมอยู่ในลิงค์อย่างชัดเจน; ดูคำอธิบายของ -rpath-ลิงค์ ตัวเลือก. ถ้า
-rpath ไม่ได้ใช้เมื่อเชื่อมโยงไฟล์ปฏิบัติการ ELF เนื้อหาของสิ่งแวดล้อม
ตัวแปร "LD_RUN_PATH" จะถูกใช้หากมีการกำหนดไว้

พื้นที่ -rpath อาจใช้ตัวเลือกนี้บน SunOS โดยค่าเริ่มต้น บน SunOS ตัวเชื่อมโยงจะ
สร้างแพตช์การค้นหารันไทม์จากทั้งหมด -L ตัวเลือกที่ได้รับ ถ้า -rpath ตัวเลือก
ถูกใช้ เส้นทางการค้นหารันไทม์จะถูกสร้างขึ้นโดยใช้คำสั่ง . เท่านั้น -rpath ตัวเลือก
ละเว้น -L ตัวเลือก. สิ่งนี้มีประโยชน์เมื่อใช้ gcc ซึ่งเพิ่มจำนวนมาก -L
ตัวเลือกที่อาจอยู่ในระบบไฟล์ที่ต่อเชื่อมกับ NFS

เพื่อความเข้ากันได้กับตัวเชื่อมโยง ELF อื่นๆ ถ้า -R ตัวเลือกตามด้วยไดเร็กทอรี
ชื่อ แทนที่จะเป็นชื่อไฟล์ จะถือว่าเป็น -rpath ตัวเลือก

-rpath-ลิงค์ DIR
เมื่อใช้ ELF หรือ SunOS ไลบรารีที่ใช้ร่วมกันหนึ่งอาจต้องการอีกไลบรารีหนึ่ง สิ่งนี้เกิดขึ้นเมื่อ an
ลิงก์ "ld -shared" รวมไลบรารีที่ใช้ร่วมกันเป็นหนึ่งในไฟล์อินพุต

เมื่อตัวเชื่อมโยงพบการพึ่งพาดังกล่าวเมื่อทำแบบไม่แบ่งใช้, ไม่สามารถย้ายได้
ลิงก์จะพยายามค้นหาไลบรารีที่ใช้ร่วมกันที่จำเป็นโดยอัตโนมัติและรวมไว้ด้วย
ในลิงก์หากไม่ได้ระบุไว้อย่างชัดเจน ในกรณีเช่นนี้ -rpath-ลิงค์ ตัวเลือก
ระบุไดเร็กทอรีชุดแรกที่จะค้นหา NS -rpath-ลิงค์ ตัวเลือกอาจระบุ
ลำดับของชื่อไดเร็กทอรีโดยการระบุรายชื่อที่คั่นด้วย
เครื่องหมายทวิภาคหรือโดยปรากฏหลายครั้ง

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

ตัวเชื่อมโยงใช้เส้นทางการค้นหาต่อไปนี้เพื่อค้นหาไลบรารีที่แบ่งใช้ที่จำเป็น

1. ไดเร็กทอรีใด ๆ ที่ระบุโดย -rpath-ลิงค์ ตัวเลือก

2. ไดเร็กทอรีใด ๆ ที่ระบุโดย -rpath ตัวเลือก. ความแตกต่างระหว่าง -rpath และ
-rpath-ลิงค์ คือไดเร็กทอรีที่ระบุโดย -rpath ตัวเลือกรวมอยู่ใน
รันไทม์ได้และใช้งานในขณะที่ -rpath-ลิงค์ ตัวเลือกมีผลเท่านั้น
ในเวลาลิงค์ มีไว้สำหรับตัวเชื่อมโยงดั้งเดิมเท่านั้น

3. ในระบบ ELF ถ้า -rpath และไม่ได้ใช้ตัวเลือก "rpath-link" ค้นหา
เนื้อหาของตัวแปรสภาพแวดล้อม "LD_RUN_PATH" มันมีไว้สำหรับลิงเกอร์ดั้งเดิม
เท่านั้น

4. บน SunOS ถ้า -rpath ไม่ได้ใช้ตัวเลือก ค้นหาไดเร็กทอรีที่ระบุ
การใช้ -L ตัวเลือก

5. สำหรับตัวเชื่อมโยงดั้งเดิม เนื้อหาของตัวแปรสภาพแวดล้อม "LD_LIBRARY_PATH"

6. สำหรับตัวเชื่อมโยง ELF ดั้งเดิม ไดเร็กทอรีใน "DT_RUNPATH" หรือ "DT_RPATH" ของการแชร์
ห้องสมุดถูกค้นหาไลบรารีที่ใช้ร่วมกันที่จำเป็น รายการ "DT_RPATH" คือ
ละเว้นหากมีรายการ "DT_RUNPATH"

7. ไดเร็กทอรีดีฟอลต์ โดยปกติ / lib และ / usr / lib.

8. สำหรับตัวเชื่อมโยงดั้งเดิมบนระบบ ELF ถ้าไฟล์ /etc/ld.so.conf มีอยู่ รายการ
ของไดเร็กทอรีที่พบในไฟล์นั้น

หากไม่พบไลบรารีที่ใช้ร่วมกันที่จำเป็น ตัวเชื่อมโยงจะออกคำเตือนและ
ต่อด้วยลิงค์

- แบ่งปัน
-แชร์ได้
สร้างห้องสมุดที่ใช้ร่วมกัน ปัจจุบันรองรับเฉพาะ ELF, XCOFF และ SunOS
แพลตฟอร์ม บน SunOS ตัวเชื่อมโยงจะสร้างไลบรารีที่แชร์โดยอัตโนมัติหาก -e
ไม่ได้ใช้ตัวเลือกและมีสัญลักษณ์ที่ไม่ได้กำหนดในลิงก์

--sort-ธรรมดา
ตัวเลือกนี้บอก ld เพื่อจัดเรียงสัญลักษณ์ทั่วไปตามขนาดเมื่อวางไว้ใน
ส่วนส่งออกที่เหมาะสม มาที่สัญลักษณ์หนึ่งไบต์ทั้งหมดก่อน ตามด้วยสอง .ทั้งหมด
ไบต์ ตามด้วยสี่ไบต์ทั้งหมด แล้วก็อย่างอื่น เพื่อป้องกันช่องว่าง
ระหว่างสัญลักษณ์เนื่องจากข้อจำกัดการจัดตำแหน่ง

--sort-section ชื่อ
ตัวเลือกนี้จะใช้ "SORT_BY_NAME" กับรูปแบบส่วนไวด์การ์ดทั้งหมดในตัวลิงก์
ต้นฉบับ

--sort-section การวางแนว
ตัวเลือกนี้จะใช้ "SORT_BY_ALIGNMENT" กับรูปแบบส่วนสัญลักษณ์แทนทั้งหมดใน
สคริปต์ตัวเชื่อมโยง

--แยกทีละไฟล์ [ขนาด]
คล้ายกับ --แยกโดย-reloc แต่สร้างส่วนเอาต์พุตใหม่สำหรับไฟล์อินพุตแต่ละไฟล์เมื่อ
ขนาด ถึง. ขนาด ค่าเริ่มต้นเป็นขนาด 1 หากไม่ได้กำหนดไว้

--แยกโดย-reloc [นับ]
พยายามสร้างส่วนพิเศษในไฟล์เอาท์พุตเพื่อให้ไม่มีส่วนเอาต์พุตเดียวใน
ไฟล์มีมากกว่า นับ การย้ายถิ่นฐาน สิ่งนี้มีประโยชน์เมื่อสร้างขนาดใหญ่
ไฟล์ที่ย้ายได้สำหรับการดาวน์โหลดลงในเคอร์เนลตามเวลาจริงด้วยวัตถุ COFF
รูปแบบไฟล์; เนื่องจาก COFF ไม่สามารถแสดงมากกว่า 65535 การย้ายถิ่นฐานในครั้งเดียว
ส่วน. โปรดทราบว่าการดำเนินการนี้จะไม่สามารถใช้งานได้กับรูปแบบไฟล์อ็อบเจ็กต์ที่ไม่
สนับสนุนส่วนโดยพลการ ตัวเชื่อมโยงจะไม่แยกส่วนอินพุตแต่ละส่วน
สำหรับการแจกจ่ายซ้ำ ดังนั้นหากส่วนอินพุตเดียวมีมากกว่า นับ การย้ายถิ่นฐาน
ส่วนผลลัพธ์หนึ่งส่วนจะมีการย้ายที่ตั้งจำนวนมากนั้น นับ ค่าเริ่มต้นเป็นค่าของ
32768.

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

--sysroot=ไดเรกทอรี
ใช้ ไดเรกทอรี เป็นตำแหน่งของ sysroot แทนที่ค่าเริ่มต้นเวลากำหนดค่า
ตัวเลือกนี้รองรับเฉพาะตัวเชื่อมโยงที่กำหนดค่าโดยใช้ --ด้วย-sysroot.

--traditional-รูปแบบ
สำหรับบางเป้าหมาย ผลลัพธ์ของ ld แตกต่างไปจากผลลัพธ์บางอย่าง
ตัวเชื่อมโยงที่มีอยู่ สวิตช์นี้ร้องขอ ld เพื่อใช้รูปแบบดั้งเดิมแทน

ตัวอย่างเช่น บน SunOS ld รวมรายการที่ซ้ำกันในตารางสตริงสัญลักษณ์ นี้
สามารถลดขนาดของไฟล์เอาต์พุตที่มีข้อมูลการดีบักแบบเต็มได้กว่า 30
เปอร์เซ็นต์ ขออภัย โปรแกรม SunOS "dbx" ไม่สามารถอ่านโปรแกรมผลลัพธ์ได้
("gdb" ไม่มีปัญหา) NS --traditional-รูปแบบ สวิตช์บอก ld ที่จะไม่รวมกัน
รายการที่ซ้ำกัน

--ส่วน-เริ่มต้น ชื่อส่วน=org
ค้นหาส่วนในไฟล์เอาต์พุตตามที่อยู่ที่กำหนดโดย org. คุณอาจใช้
ตัวเลือกนี้หลายครั้งเท่าที่จำเป็นเพื่อค้นหาหลายส่วนในคำสั่ง
เส้น org ต้องเป็นจำนวนเต็มเลขฐานสิบหกเดียว เพื่อความเข้ากันได้กับตัวเชื่อมโยงอื่น ๆ
คุณอาจละเว้นนำหน้า 0x มักจะเกี่ยวข้องกับค่าเลขฐานสิบหก หมายเหตุ มี
ไม่ควรมีช่องว่างระหว่าง ชื่อส่วน, เครื่องหมายเท่ากับ (``=''), และ org.

-ช้อนโต๊ะ org
-Tdata org
-ข้อความ org
เช่นเดียวกับ --section-start โดยมี ".bss", ".data" หรือ ".text" เป็น ชื่อส่วน.

--unresolved-สัญลักษณ์=วิธี
กำหนดวิธีจัดการกับสัญลักษณ์ที่ไม่ได้รับการแก้ไข มีสี่ค่าที่เป็นไปได้สำหรับ
วิธี:

ละเว้นทั้งหมด
อย่ารายงานสัญลักษณ์ใด ๆ ที่ยังไม่ได้แก้ไข

รายงานทั้งหมด
รายงานสัญลักษณ์ที่ยังไม่ได้แก้ไขทั้งหมด นี่คือค่าเริ่มต้น

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

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

พฤติกรรมสำหรับไลบรารีที่ใช้ร่วมกันด้วยตัวเองสามารถควบคุมได้โดย
--[ไม่-]allow-shlib-undefined ตัวเลือก

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

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

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

--เตือน-ทั่วไป
เตือนเมื่อสัญลักษณ์ทั่วไปรวมกับสัญลักษณ์ทั่วไปอื่นหรือสัญลักษณ์
คำนิยาม. ตัวเชื่อมโยง Unix อนุญาตให้ฝึกค่อนข้างเลอะเทอะ แต่ตัวเชื่อมโยงในบางส่วน
ระบบปฏิบัติการอื่นไม่ได้ ตัวเลือกนี้ช่วยให้คุณค้นหาปัญหาที่อาจเกิดขึ้นได้
จากการรวมสัญลักษณ์สากล น่าเสียดายที่ห้องสมุด C บางแห่งใช้แบบฝึกหัดนี้ดังนั้น
คุณอาจได้รับคำเตือนเกี่ยวกับสัญลักษณ์ในไลบรารีและในโปรแกรมของคุณ

สัญลักษณ์สากลมีสามประเภท ดังตัวอย่าง C:

int i = 1;
คำจำกัดความซึ่งอยู่ในส่วนข้อมูลที่เริ่มต้นของไฟล์เอาต์พุต

extern int i;
การอ้างอิงที่ไม่ได้กำหนดซึ่งไม่ได้จัดสรรพื้นที่ จะต้องมีอย่างใดอย่างหนึ่ง
คำจำกัดความหรือสัญลักษณ์ทั่วไปสำหรับตัวแปรที่ใดที่หนึ่ง

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

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

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

( ): คำเตือน: สามัญของ ` '
ถูกแทนที่ด้วยคำนิยาม
( ): คำเตือน: กำหนดไว้ที่นี่

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

( ): คำเตือน: คำจำกัดความของ ` '
เอาชนะสามัญ
( ): คำเตือน: สามัญอยู่ที่นี่

3. การรวมสัญลักษณ์ทั่วไปเข้ากับสัญลักษณ์ทั่วไปขนาดเดียวกันก่อนหน้า

( ): คำเตือน: หลายรายการร่วมกัน
ของ ` '
( ): คำเตือน: สามัญก่อนหน้าอยู่ที่นี่

4. การรวมสัญลักษณ์ทั่วไปเข้ากับสัญลักษณ์ทั่วไปที่ใหญ่กว่าก่อนหน้า

( ): คำเตือน: สามัญของ ` '
แทนที่ด้วยสามัญที่ใหญ่กว่า
( ): คำเตือน: ทั่วไปที่ใหญ่กว่าอยู่ที่นี่

5. การรวมสัญลักษณ์ทั่วไปเข้ากับสัญลักษณ์ทั่วไปที่เล็กกว่าก่อนหน้า นี่ก็เหมือนกัน
ดังเช่นกรณีก่อน เว้นแต่จะพบสัญลักษณ์ต่างกัน
สั่ง

( ): คำเตือน: สามัญของ ` '
เอาชนะสามัญที่เล็กกว่า
( ): คำเตือน: คอมมอนล์ที่เล็กกว่าอยู่ที่นี่

--เตือน-ตัวสร้าง
เตือนหากมีการใช้ตัวสร้างทั่วโลก สิ่งนี้มีประโยชน์สำหรับไฟล์อ็อบเจ็กต์บางไฟล์เท่านั้น
รูปแบบ สำหรับรูปแบบเช่น COFF หรือ ELF ตัวเชื่อมโยงไม่สามารถตรวจพบการใช้ global
ตัวสร้าง

--warn-หลาย-gp
เตือนหากต้องการค่าตัวชี้ส่วนกลางหลายค่าในไฟล์ที่ส่งออก นี้เท่านั้น
มีความหมายสำหรับโปรเซสเซอร์บางตัว เช่น Alpha โดยเฉพาะโปรเซสเซอร์บางตัว
ใส่ค่าคงที่ที่มีค่ามากไว้ในส่วนพิเศษ ทะเบียนพิเศษ (global
ตัวชี้) ชี้ไปที่ตรงกลางของส่วนนี้เพื่อให้สามารถโหลดค่าคงที่ได้
อย่างมีประสิทธิภาพผ่านโหมดการกำหนดที่อยู่สัมพัทธ์ของการลงทะเบียนฐาน ตั้งแต่การชดเชยในฐาน-
โหมดรีจิสเตอร์สัมพันธ์นั้นคงที่และค่อนข้างเล็ก (เช่น 16 บิต) ซึ่งจะจำกัด
ขนาดสูงสุดของพูลคงที่ ดังนั้น ในโปรแกรมขนาดใหญ่ มักจะจำเป็นต้อง
ใช้ค่าตัวชี้ทั่วโลกหลายค่าเพื่อให้สามารถระบุได้ทั้งหมด
ค่าคงที่ ตัวเลือกนี้ทำให้เกิดคำเตือนทุกครั้งที่เกิดกรณีนี้ขึ้น

--เตือน-ครั้งเดียว
เตือนเพียงครั้งเดียวสำหรับแต่ละสัญลักษณ์ที่ไม่ได้กำหนด มากกว่าหนึ่งครั้งต่อโมดูลที่อ้างถึง
มัน

--warn-section-align
เตือนหากที่อยู่ของส่วนผลลัพธ์มีการเปลี่ยนแปลงเนื่องจากการจัดตำแหน่ง โดยทั่วไป,
การจัดตำแหน่งจะถูกกำหนดโดยส่วนป้อนข้อมูล ที่อยู่จะเปลี่ยนก็ต่อเมื่อ
ไม่ได้ระบุไว้อย่างชัดเจน; นั่นคือถ้าคำสั่ง "SECTIONS" ไม่ได้ระบุ start
ที่อยู่สำหรับส่วน

--warn-แชร์ข้อความ
เตือนหากตัวเชื่อมโยงเพิ่ม DT_TEXTREL ให้กับวัตถุที่ใช้ร่วมกัน

--warn-unresolved-สัญลักษณ์
หากตัวเชื่อมโยงกำลังจะรายงานสัญลักษณ์ที่ยังไม่ได้แก้ไข (ดูตัวเลือก
--unresolved-สัญลักษณ์) โดยปกติจะสร้างข้อผิดพลาด ตัวเลือกนี้ทำให้มัน
สร้างคำเตือนแทน

--error-unresolved-สัญลักษณ์
สิ่งนี้จะกู้คืนพฤติกรรมเริ่มต้นของตัวเชื่อมโยงในการสร้างข้อผิดพลาดเมื่อมีการรายงาน
สัญลักษณ์ที่ไม่ได้รับการแก้ไข

--ทั้งคลัง
สำหรับแต่ละไฟล์เก็บถาวรที่กล่าวถึงในบรรทัดคำสั่งหลัง the --ทั้งคลัง ตัวเลือก
รวมไฟล์อ็อบเจ็กต์ทุกไฟล์ในไฟล์เก็บถาวรในลิงก์ แทนที่จะค้นหาไฟล์
ไฟล์เก็บถาวรสำหรับไฟล์อ็อบเจ็กต์ที่จำเป็น ปกติจะใช้เปิดไฟล์เก็บถาวร
ลงในไลบรารีที่ใช้ร่วมกัน บังคับให้ทุกอ็อบเจ็กต์ถูกรวมในการแชร์ผลลัพธ์
ห้องสมุด. ตัวเลือกนี้อาจใช้มากกว่าหนึ่งครั้ง

หมายเหตุสองข้อเมื่อใช้ตัวเลือกนี้จาก gcc: อันดับแรก gcc ไม่ทราบเกี่ยวกับตัวเลือกนี้
เลยต้องใช้ -Wl,-ทั้งคลัง. ประการที่สอง อย่าลืมใช้
-Wl,-ไม่มีที่เก็บถาวร หลังรายการที่เก็บถาวรของคุณ เพราะ gcc จะเพิ่มรายการของตัวเอง
ของไฟล์เก็บถาวรในลิงก์ของคุณและคุณอาจไม่ต้องการให้แฟล็กนี้มีผลกับสิ่งเหล่านั้นเช่นกัน

--ห่อ เครื่องหมาย
ใช้ฟังก์ชัน wrapper สำหรับ เครื่องหมาย. การอ้างอิงใด ๆ ที่ไม่ได้กำหนดถึง เครื่องหมาย จะได้รับการแก้ไข
ถึง "__wrap_เครื่องหมาย". การอ้างอิงใด ๆ ที่ไม่ได้กำหนดให้กับ "__real_เครื่องหมาย" จะได้รับการแก้ไขให้
เครื่องหมาย.

สามารถใช้เพื่อจัดเตรียม wrapper สำหรับฟังก์ชันระบบ ฟังก์ชั่นเครื่องห่อ
ควรเรียกว่า "__wrap_เครื่องหมาย". ถ้าต้องการเรียกใช้ฟังก์ชันระบบก็ควร
โทร "__real_เครื่องหมาย".

นี่คือตัวอย่างเล็กน้อย:

เป็นโมฆะ *
__wrap_malloc (size_t ค)
{
printf ("malloc เรียกด้วย %zu\n", c);
ส่งคืน __real_malloc (c);
}

หากคุณเชื่อมโยงรหัสอื่นกับไฟล์นี้โดยใช้ --ห่อ มัลลอคจากนั้นเรียก "malloc" ทั้งหมด
จะเรียกใช้ฟังก์ชัน "__wrap_malloc" แทน การเรียก "__real_malloc" ใน
"__wrap_malloc" จะเรียกฟังก์ชัน "malloc" ที่แท้จริง

คุณอาจต้องการให้ฟังก์ชัน "__real_malloc" เช่นกัน เพื่อให้ลิงก์โดยไม่มี
--ห่อ ตัวเลือกจะประสบความสำเร็จ ถ้าทำอย่างนี้ก็ไม่ควรใส่คำจำกัดความของ
"__real_malloc" ในไฟล์เดียวกับ "__wrap_malloc"; ถ้าคุณทำ แอสเซมเบลอร์อาจ
แก้ไขการโทรก่อนที่ลิงเกอร์จะมีโอกาสห่อเป็น "malloc"

--enable-ใหม่-dtags
--disable-ใหม่-dtags
ตัวเชื่อมโยงนี้สามารถสร้างแท็กไดนามิกใหม่ใน ELF แต่ระบบ ELF ที่เก่ากว่าอาจไม่ใช่
เข้าใจพวกเขา หากคุณระบุ --enable-ใหม่-dtags, แท็กไดนามิกจะถูกสร้างขึ้น
ตามความจำเป็น. หากคุณระบุ --disable-ใหม่-dtagsจะไม่มีการสร้างแท็กไดนามิกใหม่
โดยค่าเริ่มต้น แท็กไดนามิกใหม่จะไม่ถูกสร้างขึ้น โปรดทราบว่าตัวเลือกเหล่านั้นเป็นเพียง
ใช้ได้กับระบบ ELF

--hash-ขนาด=จำนวน
กำหนดขนาดเริ่มต้นของตารางแฮชของลิงเกอร์เป็นจำนวนเฉพาะใกล้กับ จำนวน.
การเพิ่มค่านี้สามารถลดระยะเวลาที่ตัวเชื่อมโยงดำเนินการ
งานโดยเพิ่มความต้องการหน่วยความจำของลิงเกอร์ ในทำนองเดียวกัน
การลดค่านี้สามารถลดความต้องการหน่วยความจำด้วยความเร็ว

--reduce-หน่วยความจำ-ค่าใช้จ่าย
ตัวเลือกนี้ช่วยลดความต้องการหน่วยความจำที่รันไทม์ ld โดยเสียค่าใช้จ่ายในการลิงก์
ความเร็ว. สิ่งนี้ถูกนำมาใช้เพื่อเลือกอัลกอริธึม O(n^2) เก่าสำหรับไฟล์แผนที่ลิงค์
การสร้างแทนที่จะเป็นอัลกอริธึม O(n) ใหม่ซึ่งใช้หน่วยความจำเพิ่มขึ้นประมาณ 40% สำหรับ
การจัดเก็บสัญลักษณ์

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

พื้นที่ --reduce-หน่วยความจำ-ค่าใช้จ่าย อาจใช้สวิตช์เพื่อเปิดใช้งานการแลกเปลี่ยนอื่นๆ ใน
ตัวเชื่อมโยงเวอร์ชันในอนาคต

ตัวเชื่อมโยง i386 PE รองรับ - แบ่งปัน ตัวเลือกซึ่งทำให้ผลลัพธ์เป็น
ไลบรารีที่เชื่อมโยงแบบไดนามิก (DLL) แทนการเรียกทำงานปกติ คุณควรตั้งชื่อ
เอาต์พุต "*.dll" เมื่อคุณใช้ตัวเลือกนี้ นอกจากนี้ลิงเกอร์ยังสนับสนุน .อย่างเต็มที่
ไฟล์มาตรฐาน "*.def" ซึ่งอาจระบุไว้ในบรรทัดคำสั่งของลิงเกอร์เหมือนอ็อบเจกต์
ไฟล์ (อันที่จริง มันควรจะนำหน้าไฟล์เก็บถาวรที่ส่งออกสัญลักษณ์เพื่อให้แน่ใจว่าได้รับ
เชื่อมโยงเหมือนกับไฟล์อ็อบเจ็กต์ปกติ)

นอกเหนือจากตัวเลือกทั่วไปสำหรับเป้าหมายทั้งหมด ตัวเชื่อมโยง i386 PE ยังรองรับเพิ่มเติม
ตัวเลือกบรรทัดคำสั่งเฉพาะสำหรับเป้าหมาย i386 PE ตัวเลือกที่ใช้ค่า
อาจแยกจากค่าของพวกเขาด้วยการเว้นวรรคหรือเครื่องหมายเท่ากับ

--add-stdcall-นามแฝง
หากได้รับ สัญลักษณ์ที่มีส่วนต่อท้าย stdcall (@nn) จะถูกส่งออกตามที่เป็นอยู่และด้วย
คำต่อท้ายถูกปล้น [ตัวเลือกนี้เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--ไฟล์ฐาน ไฟล์
ใช้ ไฟล์ เป็นชื่อของไฟล์ที่จะบันทึกที่อยู่ฐานของ .ทั้งหมด
การย้ายที่ตั้งที่จำเป็นสำหรับการสร้าง DLL ด้วย dlltool.dll. [นี่คือ i386 PE เฉพาะ
ตัวเลือก]

--dll
สร้าง DLL แทนการเรียกทำงานปกติ คุณสามารถใช้ - แบ่งปัน หรือระบุ a
"LIBRARY" ในไฟล์ ".def" ที่กำหนด [ตัวเลือกนี้เฉพาะสำหรับ i386 PE ที่เป็นเป้าหมาย
พอร์ตของตัวเชื่อมโยง]

--enable-stdcall-แก้ไข
--disable-stdcall-แก้ไข
หากลิงก์พบสัญลักษณ์ที่ไม่สามารถแก้ไขได้ ลิงก์จะพยายามทำ ``เลือนลาง .'
การเชื่อมโยง'' โดยมองหาสัญลักษณ์อื่นที่กำหนดไว้ซึ่งแตกต่างเฉพาะในรูปแบบของ
ชื่อสัญลักษณ์ (cdecl vs stdcall) และจะแก้ไขสัญลักษณ์นั้นโดยเชื่อมโยงไปยังการจับคู่
ตัวอย่างเช่น สัญลักษณ์ที่ไม่ได้กำหนด "_foo" อาจเชื่อมโยงกับฟังก์ชัน "_foo@12" หรือ
สัญลักษณ์ที่ไม่ได้กำหนด "_bar@16" อาจเชื่อมโยงกับฟังก์ชัน "_bar" เมื่อ
linker ทำสิ่งนี้ มันพิมพ์คำเตือน เนื่องจากปกติมันควรจะเชื่อมโยงไม่สำเร็จ
แต่บางครั้งนำเข้าไลบรารีที่สร้างจาก dll ของบริษัทอื่นอาจต้องการคุณลักษณะนี้
ที่จะใช้งานได้ หากคุณระบุ --enable-stdcall-แก้ไข, คุณสมบัตินี้เปิดใช้งานอย่างสมบูรณ์
และไม่พิมพ์คำเตือน หากคุณระบุ --disable-stdcall-แก้ไข, คุณลักษณะนี้คือ
ปิดการใช้งานและความไม่ตรงกันดังกล่าวถือเป็นข้อผิดพลาด [ตัวเลือกนี้เฉพาะสำหรับ
พอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--export-all-สัญลักษณ์
หากกำหนดไว้ สัญลักษณ์ส่วนกลางทั้งหมดในวัตถุที่ใช้สร้าง DLL จะถูกส่งออกโดย
ไฟล์ DLL โปรดทราบว่านี่เป็นค่าเริ่มต้นหากไม่มีการส่งออกใด ๆ
สัญลักษณ์ เมื่อสัญลักษณ์ส่งออกอย่างชัดเจนผ่านไฟล์ DEF หรือส่งออกโดยปริยาย
ผ่านแอตทริบิวต์ของฟังก์ชัน ค่าเริ่มต้นคือไม่ส่งออกอย่างอื่นเว้นแต่ตัวเลือกนี้
จะได้รับ โปรดทราบว่าสัญลักษณ์ "DllMain@12", "DllEntryPoint@0",
"DllMainCRTStartup@12" และ "impure_ptr" จะไม่ถูกส่งออกโดยอัตโนมัติ อีกด้วย,
สัญลักษณ์ที่นำเข้าจาก DLL อื่น ๆ จะไม่ถูกส่งออกซ้ำ และสัญลักษณ์จะไม่ระบุ
เลย์เอาต์ภายในของ DLL เช่นที่ขึ้นต้นด้วย "_head_" หรือลงท้ายด้วย
"_ฉันชื่อ". นอกจากนี้ ไม่มีสัญลักษณ์จาก "libgcc", "libstd++", "libmingw32" หรือ
"crtX.o" จะถูกส่งออก สัญลักษณ์ที่มีชื่อขึ้นต้นด้วย "__rtti_" หรือ "__builtin_"
จะไม่ถูกส่งออกเพื่อช่วยในการ C ++ DLL ในที่สุดก็มีรายการมากมายของ
สัญลักษณ์ cygwin-private ที่ไม่ได้ส่งออก (เห็นได้ชัดว่าสิ่งนี้ใช้กับเมื่อสร้าง
DLLs สำหรับเป้าหมาย cygwin) cygwin-excludes เหล่านี้คือ: "_cygwin_dll_entry@12",
"_cygwin_crt0_common@8", "_cygwin_noncygwin_dll_entry@12", "_fmode", "_impure_ptr",
"cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2",
"cygwin_premain3" และ "environ" [ตัวเลือกนี้เฉพาะสำหรับ i386 PE ที่เป็นเป้าหมาย
พอร์ตของตัวเชื่อมโยง]

--exclude-สัญลักษณ์ เครื่องหมาย,เครื่องหมาย...
ระบุรายการสัญลักษณ์ที่ไม่ควรส่งออกโดยอัตโนมัติ สัญลักษณ์
ชื่อสามารถคั่นด้วยเครื่องหมายจุลภาคหรือทวิภาค [ตัวเลือกนี้เฉพาะสำหรับ i386 PE
พอร์ตเป้าหมายของตัวเชื่อมโยง]

--การจัดตำแหน่งไฟล์
ระบุการจัดตำแหน่งไฟล์ ส่วนต่างๆ ในไฟล์จะเริ่มต้นที่ file offsets . เสมอ
ซึ่งเป็นผลคูณของจำนวนนี้ ค่าเริ่มต้นนี้เป็น 512 [ตัวเลือกนี้เฉพาะ
ไปยังพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--กอง สำรอง
--กอง สำรอง,ผูกมัด
ระบุจำนวนหน่วยความจำที่จะสำรอง (และเลือกที่จะคอมมิต) เพื่อใช้เป็นฮีปสำหรับ
โปรแกรมนี้ ค่าเริ่มต้นคือ 1Mb ที่สงวนไว้, 4K ที่คอมมิต [ตัวเลือกนี้เฉพาะสำหรับ
พอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--ภาพฐาน ความคุ้มค่า
ใช้ ความคุ้มค่า เป็นที่อยู่พื้นฐานของโปรแกรมหรือ dll ของคุณ นี่คือหน่วยความจำที่ต่ำที่สุด
ตำแหน่งที่จะใช้เมื่อโหลดโปรแกรมหรือ dll ของคุณ เพื่อลดความจำเป็นในการ
ย้ายและปรับปรุงประสิทธิภาพของ dll ของคุณ โดยแต่ละรายการควรมีที่อยู่ฐานที่ไม่ซ้ำกัน
และไม่ทับซ้อน dll อื่น ๆ ค่าดีฟอลต์คือ 0x400000 สำหรับไฟล์เรียกทำงาน และ
0x10000000 สำหรับ dll [ตัวเลือกนี้เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของ
ลิงเกอร์]

--ฆ่าที่
หากได้รับ stdcall จะต่อท้าย (@nn) จะถูกถอดออกจากสัญลักษณ์ก่อนเป็น
ส่งออก [ตัวเลือกนี้เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--ขนาดใหญ่-ที่อยู่-ตระหนัก
หากได้รับ บิตที่เหมาะสมในฟิลด์ ``คุณลักษณะ' ของส่วนหัว COFF คือ
กำหนดให้ระบุว่าไฟล์สั่งการนี้รองรับที่อยู่เสมือนที่มากกว่า 2
กิกะไบต์ ควรใช้ร่วมกับ /3GB หรือ /USERVA=ความคุ้มค่า เมกะไบต์
เปลี่ยนในส่วน ``[ระบบปฏิบัติการ]'' ของ BOOT.INI มิเช่นนั้นบิตนี้
ไม่มีผล [ตัวเลือกนี้เฉพาะสำหรับพอร์ตเป้าหมาย PE ของตัวเชื่อมโยง]

--รุ่นภาพหลัก ความคุ้มค่า
ตั้งค่าหมายเลขหลักของ ``เวอร์ชันอิมเมจ'' ค่าเริ่มต้นคือ 1 [ตัวเลือกนี้คือ
เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--major-os-เวอร์ชัน ความคุ้มค่า
ตั้งค่าหมายเลขหลักของ ``os version'' ค่าเริ่มต้นเป็น 4 [ตัวเลือกนี้มีความเฉพาะเจาะจง
ไปยังพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

-- รุ่นระบบย่อยที่สำคัญ ความคุ้มค่า
ตั้งค่าหมายเลขหลักของ ``เวอร์ชันระบบย่อย'' ค่าเริ่มต้นเป็น 4 [ตัวเลือกนี้คือ
เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--รุ่นรองภาพ- ความคุ้มค่า
ตั้งค่าหมายเลขรองของ ``เวอร์ชันอิมเมจ'' ค่าเริ่มต้นเป็น 0 [ตัวเลือกนี้คือ
เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--minor-os-เวอร์ชัน ความคุ้มค่า
ตั้งค่าหมายเลขรองของ ``os version'' ค่าเริ่มต้นเป็น 0 [ตัวเลือกนี้มีความเฉพาะเจาะจง
ไปยังพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--minor-subsystem-รุ่น ความคุ้มค่า
ตั้งค่าหมายเลขรองของ ``เวอร์ชันระบบย่อย'' ค่าเริ่มต้นเป็น 0 [ตัวเลือกนี้คือ
เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--output-def ไฟล์
ตัวเชื่อมโยงจะสร้างไฟล์ ไฟล์ ซึ่งจะมีไฟล์ DEF ที่สอดคล้องกับ
DLL ที่ตัวเชื่อมโยงกำลังสร้าง ไฟล์ DEF นี้ (ซึ่งควรเรียกว่า "*.def") อาจ
ใช้เพื่อสร้างไลบรารีนำเข้าด้วย "dlltool" หรืออาจใช้เป็นข้อมูลอ้างอิงถึง
สัญลักษณ์ที่ส่งออกโดยอัตโนมัติหรือโดยปริยาย [ตัวเลือกนี้เฉพาะสำหรับ i386 PE
พอร์ตเป้าหมายของตัวเชื่อมโยง]

--out-นัย ไฟล์
ตัวเชื่อมโยงจะสร้างไฟล์ ไฟล์ ซึ่งจะมีการนำเข้า lib ที่สอดคล้องกับ
DLL ที่ตัวเชื่อมโยงกำลังสร้าง lib การนำเข้านี้ (ซึ่งควรเรียกว่า "*.dll.a" หรือ
"*.a" อาจใช้เพื่อเชื่อมโยงไคลเอ็นต์กับ DLL ที่สร้างขึ้น พฤติกรรมนี้ทำให้
เป็นไปได้ที่จะข้ามขั้นตอนการสร้างไลบรารีนำเข้า "dlltool" แยกต่างหาก [ตัวเลือกนี้คือ
เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--enable-auto-image-base
เลือกฐานอิมเมจสำหรับ DLL โดยอัตโนมัติ เว้นแต่จะระบุไว้โดยใช้ปุ่ม
อาร์กิวเมนต์ "--image-base" โดยใช้แฮชที่สร้างจาก dllname เพื่อสร้างเอกลักษณ์
ฐานภาพสำหรับ DLL แต่ละรายการ การชนกันในหน่วยความจำและการย้ายตำแหน่งซึ่งอาจทำให้โปรแกรมล่าช้า
หลีกเลี่ยงการดำเนินการ [ตัวเลือกนี้เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของ
ลิงเกอร์]

--disable-auto-image-base
อย่าสร้างฐานภาพที่ไม่ซ้ำกันโดยอัตโนมัติ หากไม่มีการระบุผู้ใช้
image base ("--image-base") จากนั้นใช้ค่าเริ่มต้นของแพลตฟอร์ม [ตัวเลือกนี้เฉพาะ
ไปยังพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--dll-ค้นหาคำนำหน้า เชือก
เมื่อเชื่อมโยงแบบไดนามิกกับ dll โดยไม่มีไลบรารีนำเข้า ให้ค้นหา
" .dll" แทนที่จะเป็น "lib .dll". ลักษณะการทำงานนี้ช่วยให้
แยกแยะได้ง่ายระหว่าง DLLs ที่สร้างขึ้นสำหรับ "แพลตฟอร์มย่อย" ต่างๆ: เนทีฟ, cygwin,
uwin, pw เป็นต้น ตัวอย่างเช่น cygwin DLL มักใช้ "--dll-search-prefix=cyg"
[ตัวเลือกนี้เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--เปิดใช้งาน-นำเข้าอัตโนมัติ
ทำการเชื่อมโยงที่ซับซ้อนของ "_symbol" กับ "__imp__symbol" สำหรับการนำเข้า DATA จาก DLL
และสร้างสัญลักษณ์ thunking ที่จำเป็นเมื่อสร้างไลบรารีนำเข้าด้วย
การส่งออกข้อมูลเหล่านั้น หมายเหตุ: การใช้ส่วนขยาย 'นำเข้าอัตโนมัติ' จะทำให้ข้อความ
ส่วนของไฟล์รูปภาพที่จะเขียนได้ สิ่งนี้ไม่สอดคล้องกับ PE-COFF
ข้อกำหนดรูปแบบที่เผยแพร่โดย Microsoft

การใช้ 'นำเข้าอัตโนมัติ' โดยทั่วไปจะ 'ใช้ได้' - แต่บางครั้งคุณอาจเห็นสิ่งนี้
ข้อความ:

"ตัวแปร ' ' ไม่สามารถนำเข้าอัตโนมัติได้ โปรดอ่านเอกสารประกอบสำหรับ ld's
"--เปิดใช้งาน-นำเข้าอัตโนมัติ" สำหรับรายละเอียด

ข้อความนี้เกิดขึ้นเมื่อนิพจน์บางส่วน (ย่อย) เข้าถึงที่อยู่ที่ได้รับจาก
ผลรวมของค่าคงที่สองค่า (ตารางนำเข้า Win32 อนุญาตเพียงค่าเดียวเท่านั้น) กรณีนี้
อาจเกิดขึ้นรวมถึงการเข้าถึงฟิลด์สมาชิกของตัวแปร struct ที่นำเข้าจาก DLL
เช่นเดียวกับการใช้ดัชนีคงที่ในตัวแปรอาร์เรย์ที่นำเข้าจาก DLL ใด ๆ
ตัวแปรแบบหลายคำ (อาร์เรย์ โครงสร้าง แบบยาว ฯลฯ) อาจทริกเกอร์เงื่อนไขข้อผิดพลาดนี้
อย่างไรก็ตาม โดยไม่คำนึงถึงชนิดข้อมูลที่แน่นอนของตัวแปรที่ส่งออกที่ละเมิด ld will
ตรวจจับเสมอ ออกคำเตือน และออก

มีหลายวิธีในการแก้ไขปัญหานี้ โดยไม่คำนึงถึงประเภทข้อมูลของ
ตัวแปรที่ส่งออก:

วิธีหนึ่งคือการใช้สวิตช์ --enable-runtime-pseudo-reloc สิ่งนี้ทำให้ภารกิจของ
การปรับการอ้างอิงในโค้ดไคลเอ็นต์ของคุณสำหรับสภาวะแวดล้อมรันไทม์ ดังนั้นวิธีนี้จึงได้ผล
เฉพาะเมื่อสภาพแวดล้อมรันไทม์สนับสนุนคุณลักษณะนี้

วิธีที่สองคือการบังคับ 'ค่าคงที่' ตัวใดตัวหนึ่งให้เป็นตัวแปร - นั่นคือ
ไม่รู้จักและไม่สามารถเพิ่มประสิทธิภาพได้ในขณะรวบรวม สำหรับอาร์เรย์ มีความเป็นไปได้สองประการ:
a) ทำให้ indexee (ที่อยู่ของอาร์เรย์) เป็นตัวแปรหรือ b) สร้างดัชนี 'ค่าคงที่'
ตัวแปร. ดังนั้น:

ประเภทภายนอก extern_array[];
extern_array[1] -->
{ ประเภทระเหย *t=extern_array; ที[1] }

or

ประเภทภายนอก extern_array[];
extern_array[1] -->
{ int ระเหย t=1; extern_array[t] }

สำหรับโครงสร้าง (และประเภทข้อมูลที่มีหลายคำอื่นๆ ส่วนใหญ่) ตัวเลือกเดียวคือสร้าง
struct ตัวเอง (หรือ long long หรือ ...) ตัวแปร:

extern struct ของ extern_struct;
extern_struct.field -->
{ โครงสร้างระเหย s *t=&extern_struct; t->ฟิลด์ }

or

extern ยาว extern_ll;
extern_ll -->
{ ยาวผันผวนยาว * local_ll=&extern_ll; *local_ll }

วิธีที่สามในการจัดการกับความยากนี้คือละทิ้ง 'การนำเข้าอัตโนมัติ' สำหรับ
สัญลักษณ์ที่ละเมิดและทำเครื่องหมายด้วย "__declspec(dllimport)" อย่างไรก็ตามในทางปฏิบัตินั้น
ต้องการใช้เวลาคอมไพล์ #defines เพื่อระบุว่าคุณกำลังสร้าง DLL หรือไม่
การสร้างรหัสลูกค้าที่จะเชื่อมโยงไปยัง DLL หรือเพียงแค่สร้าง/เชื่อมโยงไปยัง static
ห้องสมุด. ในการเลือกระหว่างวิธีการต่างๆในการแก้ไข 'โดยตรง
จัดการกับปัญหาการชดเชยคงที่ คุณควรพิจารณาการใช้งานจริงโดยทั่วไป:

เดิม:

--foo.h
ภายนอก int arr[];
--foo.c
#รวม "foo.h"
โมฆะ main (int argc, ถ่าน **argv){
printf("%d\n",arr[1]);
}

โซลูชัน 1:

--foo.h
ภายนอก int arr[];
--foo.c
#รวม "foo.h"
โมฆะ main (int argc, ถ่าน **argv){
/* วิธีแก้ปัญหานี้มีไว้สำหรับ win32 และ cygwin; อย่า "เพิ่มประสิทธิภาพ" */
int ผันผวน *parr = arr;
printf("%d\n",parr[1]);
}

โซลูชัน 2:

--foo.h
/* หมายเหตุ: ถือว่าส่งออกอัตโนมัติ (ไม่มี __declspec(dllexport)) */
#if (กำหนด (_WIN32) ⎪⎪ กำหนด (__CYGWIN__)) && \
!( กำหนด (FOO_BUILD_DLL) ⎪⎪ กำหนด (FOO_STATIC))
#define FOO_IMPORT __declspec (dllimport)
#อื่น
#กำหนด FOO_IMPORT
#เอนดิฟ
ภายนอก FOO_IMPORT int arr[];
--foo.c
#รวม "foo.h"
โมฆะ main (int argc, ถ่าน **argv){
printf("%d\n",arr[1]);
}

วิธีที่สี่ในการหลีกเลี่ยงปัญหานี้คือการเข้ารหัสไลบรารีของคุณใหม่เพื่อใช้ฟังก์ชัน
อินเทอร์เฟซแทนที่จะเป็นอินเทอร์เฟซข้อมูลสำหรับตัวแปรที่ละเมิด (เช่น set_foo() และ
get_foo() ฟังก์ชั่นเสริม) [ตัวเลือกนี้เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE
ของลิงเกอร์]

--disable-นำเข้าอัตโนมัติ
อย่าพยายามเชื่อมโยง "_symbol" กับ "__imp__symbol" ที่ซับซ้อนสำหรับ DATA
นำเข้าจาก DLL [ตัวเลือกนี้เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของ
ลิงเกอร์]

--enable-runtime-หลอก-reloc
หากโค้ดของคุณมีนิพจน์ที่อธิบายไว้ในส่วน --enable-auto-import นั่นคือ
การนำเข้าข้อมูลจาก DLL โดยมีค่าออฟเซ็ตที่ไม่ใช่ศูนย์ สวิตช์นี้จะสร้างเวกเตอร์ของ
'การย้ายตำแหน่งหลอกรันไทม์' ซึ่งสามารถใช้โดยสภาพแวดล้อมรันไทม์เพื่อปรับ
การอ้างอิงถึงข้อมูลดังกล่าวในรหัสลูกค้าของคุณ [ตัวเลือกนี้เฉพาะสำหรับ i386 PE
พอร์ตเป้าหมายของตัวเชื่อมโยง]

--disable-runtime-หลอก-reloc
อย่าสร้างการโยกย้ายหลอกสำหรับการนำเข้าข้อมูลออฟเซ็ตที่ไม่ใช่ศูนย์จาก DLL นี่คือ
ค่าเริ่มต้น [ตัวเลือกนี้เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

-- เปิดใช้งานพิเศษ pe-debug
แสดงข้อมูลการดีบักเพิ่มเติมที่เกี่ยวข้องกับการกระตุกสัญลักษณ์การนำเข้าอัตโนมัติ [ตัวเลือกนี้คือ
เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--ส่วนการจัดตำแหน่ง
ตั้งค่าการจัดตำแหน่งส่วน ส่วนในหน่วยความจำจะเริ่มต้นตามที่อยู่ซึ่ง
เป็นผลคูณของจำนวนนี้ ค่าเริ่มต้นเป็น 0x1000 [ตัวเลือกนี้เฉพาะสำหรับ
พอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--ซ้อนกัน สำรอง
--ซ้อนกัน สำรอง,ผูกมัด
ระบุจำนวนหน่วยความจำที่จะสำรอง (และเลือกที่จะคอมมิต) เพื่อใช้เป็น stack
สำหรับโปรแกรมนี้ ค่าเริ่มต้นคือ 2Mb สงวนไว้ 4K คอมมิต [ตัวเลือกนี้คือ
เฉพาะสำหรับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

--ระบบย่อย ที่
--ระบบย่อย ที่:สำคัญ
--ระบบย่อย ที่:สำคัญ.ผู้เยาว์
ระบุระบบย่อยที่โปรแกรมของคุณจะดำเนินการ ค่านิยมทางกฎหมายสำหรับ
ที่ คือ "เนทีฟ" "วินโดว์" "คอนโซล" "โพซิกซ์" และ "เอ็กซ์บ็อกซ์" คุณสามารถเลือกตั้งค่า
เวอร์ชันระบบย่อยด้วย นอกจากนี้ยังยอมรับค่าตัวเลขสำหรับ ที่. [ตัวเลือกนี้
เฉพาะกับพอร์ตเป้าหมาย i386 PE ของตัวเชื่อมโยง]

ตัวเชื่อมโยง 68HC11 และ 68HC12 รองรับตัวเลือกเฉพาะเพื่อควบคุมคลังหน่วยความจำ
การสลับการทำแผนที่และการสร้างรหัสแทรมโพลีน

--ไม่มีแทรมโพลีน
ตัวเลือกนี้ปิดใช้งานการสร้างแทรมโพลีน โดยค่าเริ่มต้น แทรมโพลีนคือ
สร้างขึ้นสำหรับแต่ละฟังก์ชัน far ซึ่งเรียกว่าโดยใช้คำสั่ง "jsr" (นี้
เกิดขึ้นเมื่อใช้ตัวชี้ไปยังฟังก์ชันไกล)

--ธนาคาร-หน้าต่าง ชื่อ
ตัวเลือกนี้ระบุตัวเชื่อมโยงถึงชื่อของขอบเขตหน่วยความจำใน หน่วยความจำ
ข้อกำหนดที่อธิบายหน้าต่างคลังหน่วยความจำ คำจำกัดความของภูมิภาคดังกล่าวคือ
จากนั้นตัวเชื่อมโยงจะใช้เพื่อคำนวณการเพจและที่อยู่ในหน้าต่างหน่วยความจำ

และพวกเรา


คุณสามารถเปลี่ยนพฤติกรรมของ ld ด้วยตัวแปรสภาพแวดล้อม "GNUTARGET"
"LDEMULATION" และ "COLLECT_NO_DEMANGLE"

"GNUTARGET" กำหนดรูปแบบอ็อบเจ็กต์อินพุตไฟล์หากคุณไม่ได้ใช้ -b (หรือคำพ้องความหมาย
--รูปแบบ). ค่าควรเป็นหนึ่งในชื่อ BFD สำหรับรูปแบบอินพุต ถ้าไม่มี
"GNUTARGET" ในสภาพแวดล้อม ld ใช้รูปแบบธรรมชาติของเป้าหมาย ถ้า "GNUTARGET"
ถูกตั้งค่าเป็น "ค่าเริ่มต้น" จากนั้น BFD จะพยายามค้นหารูปแบบอินพุตโดยตรวจสอบไบนารี
ไฟล์อินพุต; วิธีนี้มักจะสำเร็จ แต่ก็มีความคลุมเครือที่อาจเกิดขึ้นได้
ไม่ใช่วิธีการตรวจสอบให้แน่ใจว่าตัวเลขวิเศษที่ใช้ระบุรูปแบบไฟล์อ็อบเจ็กต์คือ
มีเอกลักษณ์. อย่างไรก็ตาม ขั้นตอนการกำหนดค่าสำหรับ BFD ในแต่ละระบบจะวาง
รูปแบบทั่วไปสำหรับระบบนั้นก่อนในรายการค้นหา ดังนั้นความกำกวมจึงได้รับการแก้ไข
เพื่อประโยชน์ของการประชุม

"LDEMULATION" กำหนดการจำลองเริ่มต้นหากคุณไม่ได้ใช้ -m ตัวเลือก
การจำลองสามารถส่งผลกระทบต่อลักษณะการทำงานของตัวเชื่อมโยงในด้านต่างๆ โดยเฉพาะอย่างยิ่งตัวเชื่อมโยงเริ่มต้น
สคริปต์ คุณสามารถแสดงรายการการจำลองที่พร้อมใช้งานด้วย --รายละเอียด or -V ตัวเลือก. ถ้า
-m ไม่ได้ใช้ตัวเลือกและไม่ได้กำหนดตัวแปรสภาพแวดล้อม "LDEMULATION"
การจำลองเริ่มต้นขึ้นอยู่กับการกำหนดค่าตัวเชื่อมโยง

โดยปกติลิงเกอร์จะใช้ค่าเริ่มต้นเป็นสัญลักษณ์แยกส่วน อย่างไรก็ตาม ถ้า
"COLLECT_NO_DEMANGLE" ถูกตั้งค่าในสภาพแวดล้อม จากนั้นจะมีค่าเริ่มต้นเป็นไม่แยกส่วน
สัญลักษณ์ ตัวแปรสภาพแวดล้อมนี้ถูกใช้ในลักษณะที่คล้ายกันโดยตัวเชื่อมโยง "gcc"
โปรแกรมห่อ ค่าเริ่มต้นอาจถูกแทนที่โดย -- รื้อ และ --ไม่มี-demangle
ตัวเลือก

ใช้ h8300-hitachi-coff-ld ออนไลน์โดยใช้บริการ onworks.net


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

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

  • 1
    DivFix + + +
    DivFix + + +
    DivFix++ เป็นโปรแกรมซ่อมแซมวิดีโอ AVI และ
    ซอฟต์แวร์ดูตัวอย่าง ออกแบบมาสำหรับการซ่อมแซม
    และดูตัวอย่างไฟล์ที่กำลังดาวน์โหลด
    จาก ed2k(emule), torrent, gnutella, ftp...
    ดาวน์โหลด DivFix++
  • 2
    ชุมชน JBoss
    ชุมชน JBoss
    โครงการที่ขับเคลื่อนโดยชุมชนประกอบด้วย
    นวัตกรรมใหม่ล่าสุด สุดล้ำ
    แอพ โครงการเรือธงของเรา JBoss AS คือ
    โอเพ่นซอร์สชั้นนำ,
    ได้มาตรฐาน...
    ดาวน์โหลดชุมชน JBoss
  • 3
    จังโก้ ฟิลเลอร์
    จังโก้ ฟิลเลอร์
    django Filer คือการจัดการไฟล์
    แอปพลิเคชันสำหรับ django ที่ทำให้
    จัดการไฟล์และรูปภาพได้อย่างง่ายดาย
    django-filer คือการจัดการไฟล์
    แอพพลิเคชั่น djang...
    ดาวน์โหลด Django Filer
  • 4
    xCAT
    xCAT
    ชุดเครื่องมือการดูแลระบบคลัสเตอร์ขั้นสูง
    xCAT คือการจัดการคลัสเตอร์ที่ปรับขนาดได้
    และเครื่องมือจัดเตรียมที่ให้
    การควบคุมฮาร์ดแวร์ การค้นพบ และระบบปฏิบัติการ
    ขยะแขยง/ดิ...
    ดาวน์โหลด xCAT
  • 5
    ปอนด์ต่อตารางนิ้ว
    ปอนด์ต่อตารางนิ้ว
    Psi เป็น XMPP ที่ทรงพลังข้ามแพลตฟอร์ม
    ลูกค้าออกแบบมาสำหรับผู้ใช้ที่มีประสบการณ์
    มีรุ่นสำหรับ MS
    Windows, GNU/Linux และ macOS.. ผู้ชม:
    ผู้ใช้ปลายทาง...
    ดาวน์โหลด Psi
  • 6
    บ็อบบี้ วอลเลย์ 2
    บ็อบบี้ วอลเลย์ 2
    ความต่อเนื่องอย่างเป็นทางการของผู้มีชื่อเสียง
    Blobby Volley 1.x เกมอาร์เคด..
    ผู้ชม: ผู้ใช้ปลายทาง/เดสก์ท็อป ผู้ใช้
    อินเทอร์เฟซ: OpenGL, SDL การเขียนโปรแกรม
    ภาษา: C++, ลัวะ ค...
    ดาวน์โหลด Blobby Volley 2
  • เพิ่มเติม»

คำสั่ง Linux

Ad