ນີ້ແມ່ນຄໍາສັ່ງ mips-linux-gnu-ld ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
ld - ຕົວເຊື່ອມຕໍ່ GNU
ສະຫຼຸບສັງລວມ
ld [ທາງເລືອກໃນການ] objfile ...
ລາຍລະອຽດ
ld ລວມວັດຖຸແລະແຟ້ມເອກະສານຈໍານວນຫນຶ່ງ, ຍ້າຍຂໍ້ມູນຂອງພວກເຂົາແລະເຊື່ອມຕໍ່ສັນຍາລັກ
ອ້າງອີງ. ປົກກະຕິແລ້ວຂັ້ນຕອນສຸດທ້າຍໃນການລວບລວມໂຄງການແມ່ນເພື່ອດໍາເນີນການ ld.
ld ຍອມຮັບໄຟລ໌ Linker Command Language ທີ່ຂຽນໄວ້ໃນ superset ຂອງ AT&T's Link Editor
syntax ພາສາຄໍາສັ່ງ, ເພື່ອສະຫນອງການຄວບຄຸມຢ່າງຊັດເຈນແລະທັງຫມົດໃນຂະບວນການເຊື່ອມຕໍ່.
ຫນ້າຜູ້ຊາຍນີ້ບໍ່ໄດ້ອະທິບາຍພາສາຄໍາສັ່ງ; ເບິ່ງ ld ເຂົ້າ "ຂໍ້ມູນ" ສໍາລັບເຕັມ
ລາຍລະອຽດກ່ຽວກັບພາສາຄໍາສັ່ງແລະດ້ານອື່ນໆຂອງຕົວເຊື່ອມຕໍ່ GNU.
ສະບັບພາສາຂອງໂຄງການນີ້ ld ໃຊ້ຫ້ອງສະຫມຸດ BFD ຈຸດປະສົງທົ່ວໄປເພື່ອດໍາເນີນການກ່ຽວກັບໄຟລ໌ວັດຖຸ. ນີ້
ອະນຸຍາດໃຫ້ ld ເພື່ອອ່ານ, ສົມທົບ, ແລະຂຽນໄຟລ໌ວັດຖຸໃນຫຼາຍຮູບແບບທີ່ແຕກຕ່າງກັນ --- ສໍາລັບ
ຕົວຢ່າງ, COFF ຫຼື "a.out". ຮູບແບບທີ່ແຕກຕ່າງກັນອາດຈະຖືກເຊື່ອມຕໍ່ກັນເພື່ອຜະລິດໃດໆ
ປະເພດໄຟລ໌ວັດຖຸທີ່ມີຢູ່.
ນອກເຫນືອຈາກຄວາມຍືດຫຍຸ່ນຂອງມັນ, ຕົວເຊື່ອມຕໍ່ GNU ແມ່ນມີປະໂຫຍດຫຼາຍກ່ວາຕົວເຊື່ອມຕໍ່ອື່ນໆໃນການສະຫນອງ
ຂໍ້ມູນການວິນິດໄສ. ຜູ້ເຊື່ອມຕໍ່ຫຼາຍຄົນປະຖິ້ມການປະຕິບັດທັນທີເມື່ອພົບ
ຄວາມຜິດພາດ; ເມື່ອໃດກໍຕາມທີ່ເປັນໄປໄດ້, ld ສືບຕໍ່ປະຕິບັດ, ອະນຸຍາດໃຫ້ທ່ານສາມາດກໍານົດຄວາມຜິດພາດອື່ນໆ
(ຫຼື, ໃນບາງກໍລະນີ, ເພື່ອໃຫ້ໄດ້ຮັບໄຟລ໌ຜົນຜະລິດເຖິງວ່າຈະມີຄວາມຜິດພາດ).
ຕົວເຊື່ອມຕໍ່ GNU ld ຫມາຍເຖິງການກວມເອົາຂອບເຂດຂອງສະຖານະການຢ່າງກວ້າງຂວາງ, ແລະເພື່ອໃຫ້ເຂົ້າກັນໄດ້
ທີ່ເປັນໄປໄດ້ກັບຕົວເຊື່ອມຕໍ່ອື່ນໆ. ດັ່ງນັ້ນ, ທ່ານມີທາງເລືອກຫຼາຍທີ່ຈະຄວບຄຸມມັນ
ພຶດຕິ ກຳ.
OPTIONS
ຕົວເຊື່ອມຕໍ່ສະຫນັບສະຫນູນທາງເລືອກເສັ້ນຄໍາສັ່ງຫຼາຍ, ແຕ່ໃນການປະຕິບັດຕົວຈິງຈໍານວນຫນ້ອຍຂອງພວກເຂົາ
ຖືກນໍາໃຊ້ໃນສະພາບການສະເພາະໃດຫນຶ່ງ. ສໍາລັບຕົວຢ່າງ, ການນໍາໃຊ້ເລື້ອຍໆ ld ແມ່ນເພື່ອເຊື່ອມຕໍ່
ໄຟລ໌ວັດຖຸມາດຕະຖານ Unix ຢູ່ໃນລະບົບມາດຕະຖານ Unix ທີ່ຮອງຮັບ. ກ່ຽວກັບລະບົບດັ່ງກ່າວ, ເພື່ອ
ເຊື່ອມຕໍ່ໄຟລ໌ "hello.o":
ld -o /lib/crt0.o hello.o -lc
ສິ່ງນີ້ບອກ ld ເພື່ອຜະລິດໄຟລ໌ທີ່ເອີ້ນວ່າ output ເປັນຜົນມາຈາກການເຊື່ອມໂຍງໄຟລ໌
"/lib/crt0.o" ກັບ "hello.o" ແລະຫ້ອງສະຫມຸດ "libc.a", ເຊິ່ງຈະມາຈາກມາດຕະຖານ.
ໄດເລກະທໍລີຄົ້ນຫາ. (ເບິ່ງການສົນທະນາຂອງ -l ທາງເລືອກຂ້າງລຸ່ມນີ້.)
ບາງທາງເລືອກຂອງເສັ້ນຄໍາສັ່ງທີ່ຈະ ld ອາດຈະຖືກລະບຸໄວ້ໃນຈຸດໃດນຶ່ງໃນແຖວຄຳສັ່ງ.
ຢ່າງໃດກໍຕາມ, ທາງເລືອກທີ່ຫມາຍເຖິງໄຟລ໌, ເຊັ່ນ: -l or -T, ເຮັດໃຫ້ໄຟລ໌ຖືກອ່ານຢູ່ທີ່
ຈຸດທີ່ຕົວເລືອກປາກົດຢູ່ໃນເສັ້ນຄໍາສັ່ງ, ກ່ຽວຂ້ອງກັບໄຟລ໌ວັດຖຸແລະ
ທາງເລືອກໄຟລ໌ອື່ນໆ. ການຊໍ້າຄືນທາງເລືອກທີ່ບໍ່ແມ່ນໄຟລ໌ທີ່ມີການໂຕ້ຖຽງທີ່ແຕກຕ່າງກັນຈະມີ
ບໍ່ມີຜົນກະທົບເພີ່ມເຕີມ, ຫຼື override ການປະກົດຕົວກ່ອນຫນ້າ (ຜູ້ທີ່ເພີ່ມເຕີມໄປທາງຊ້າຍໃນຄໍາສັ່ງ
line) ຂອງທາງເລືອກນັ້ນ. ທາງເລືອກທີ່ອາດຈະໄດ້ຮັບການລະບຸຄວາມຫມາຍຫຼາຍກ່ວາຫນຶ່ງຄັ້ງແມ່ນ
ບັນທຶກໄວ້ໃນຄໍາອະທິບາຍຂ້າງລຸ່ມນີ້.
ອາກິວເມັນທີ່ບໍ່ແມ່ນທາງເລືອກແມ່ນໄຟລ໌ວັດຖຸຫຼືແຟ້ມຈັດເກັບທີ່ຈະເຊື່ອມຕໍ່ກັນ. ເຂົາເຈົ້າ
ອາດຈະປະຕິບັດຕາມ, ກ່ອນ, ຫຼືຖືກປະສົມກັບຕົວເລືອກແຖວຄໍາສັ່ງ, ຍົກເວັ້ນໄຟລ໌ວັດຖຸ
ການໂຕ້ຖຽງອາດຈະບໍ່ຖືກຈັດໃສ່ລະຫວ່າງທາງເລືອກແລະການໂຕ້ຖຽງຂອງມັນ.
ໂດຍປົກກະຕິແລ້ວຕົວເຊື່ອມຕໍ່ຈະຖືກເອີ້ນດ້ວຍໄຟລ໌ວັດຖຸຢ່າງໜ້ອຍໜຶ່ງໄຟລ໌, ແຕ່ທ່ານສາມາດລະບຸອັນອື່ນໄດ້
ຮູບແບບຂອງໄຟລ໌ປ້ອນຂໍ້ມູນຄູ່ໂດຍການນໍາໃຊ້ -l, -R, ແລະພາສາຄໍາສັ່ງ script. ຖ້າ no binary
ໄຟລ໌ທີ່ປ້ອນຂໍ້ມູນທັງຫມົດແມ່ນໄດ້ລະບຸໄວ້, ຕົວເຊື່ອມຕໍ່ບໍ່ໄດ້ຜະລິດຜົນຜະລິດໃດຫນຶ່ງ, ແລະບັນຫາ
ຂໍ້ຄວາມ No ການປ້ອນຂໍ້ມູນ ໄຟ.
ຖ້າຕົວເຊື່ອມຕໍ່ບໍ່ສາມາດຮັບຮູ້ຮູບແບບຂອງໄຟລ໌ວັດຖຸ, ມັນຈະສົມມຸດວ່າມັນເປັນ a
linker script. ສະຄຣິບທີ່ລະບຸໄວ້ໃນວິທີນີ້ ຂະຫຍາຍຕົວເຊື່ອມຕໍ່ຫຼັກທີ່ໃຊ້ສຳລັບ
ການເຊື່ອມຕໍ່ (ທັງ script linker ເລີ່ມຕົ້ນຫຼືຫນຶ່ງທີ່ລະບຸໄວ້ໂດຍການໃຊ້ -T) ນີ້
ຄຸນນະສົມບັດອະນຸຍາດໃຫ້ linker ເພື່ອເຊື່ອມຕໍ່ກັບໄຟລ໌ທີ່ປະກົດວ່າເປັນວັດຖຸຫຼືເປັນ
archive, ແຕ່ຕົວຈິງແລ້ວພຽງແຕ່ກໍານົດຄ່າສັນຍາລັກບາງຢ່າງ, ຫຼືໃຊ້ "INPUT" ຫຼື "GROUP" ເພື່ອ
ໂຫຼດວັດຖຸອື່ນໆ. ການລະບຸສະຄຣິບດ້ວຍວິທີນີ້ພຽງແຕ່ເພີ່ມຕົວເຊື່ອມຕໍ່ຕົ້ນຕໍ
script, ມີຄໍາສັ່ງພິເສດທີ່ວາງໄວ້ຫຼັງຈາກ script ຕົ້ນຕໍ; ໃຊ້ -T ທາງເລືອກທີ່ຈະທົດແທນ
script linker ເລີ່ມຕົ້ນທັງຫມົດ, ແຕ່ສັງເກດເຫັນຜົນກະທົບຂອງຄໍາສັ່ງ "INSERT".
ສໍາລັບຕົວເລືອກທີ່ມີຊື່ເປັນຕົວອັກສອນດຽວ, ການໂຕ້ຖຽງທາງເລືອກຈະຕ້ອງປະຕິບັດຕາມ
ຕົວອັກສອນທາງເລືອກໂດຍບໍ່ມີການແຊກແຊງຊ່ອງຫວ່າງ, ຫຼືໃຫ້ເປັນການໂຕ້ຖຽງແຍກຕ່າງຫາກ
ທັນທີປະຕິບັດຕາມທາງເລືອກທີ່ຕ້ອງການໃຫ້ເຂົາເຈົ້າ.
ສໍາລັບຕົວເລືອກທີ່ມີຊື່ຫຼາຍຕົວໜັງສື, ນຶ່ງຂີດ ຫຼືສອງໂຕສາມາດນຳໜ້າໄດ້
ຊື່ທາງເລືອກ; ຍົກຕົວຢ່າງ, -trace-ສັນຍາລັກ ແລະ --trace-ສັນຍາລັກ ທຽບເທົ່າ. ຫມາຍເຫດ --- ຢູ່ທີ່ນັ້ນ
ແມ່ນຂໍ້ຍົກເວັ້ນອັນໜຶ່ງຕໍ່ກັບກົດລະບຽບນີ້. ໂຕເລືອກຕົວອັກສອນຫຼາຍອັນທີ່ເລີ່ມຕົ້ນດ້ວຍຕົວພິມນ້ອຍ 'o'
ສາມາດນຳໜ້າໄດ້ພຽງສອງຂີດ. ນີ້ແມ່ນເພື່ອຫຼຸດຜ່ອນຄວາມສັບສົນກັບ -o ທາງເລືອກ. ດັ່ງນັ້ນ
ຍົກຕົວຢ່າງ - ມະຫັດສະຈັນ ຕັ້ງຊື່ໄຟລ໌ຜົນຜະລິດເປັນ magic ໃນຂະນະທີ່ --ມະຫັດສະຈັນ ກໍານົດ NMAGIC
ທຸງຢູ່ໃນຜົນຜະລິດ.
ອາກິວເມັນຕໍ່ກັບຕົວເລືອກຕົວອັກສອນຫຼາຍຕົວຈະຕ້ອງຖືກແຍກອອກຈາກຊື່ຕົວເລືອກດ້ວຍຕົວ
ເທົ່າກັບເຄື່ອງຫມາຍ, ຫຼືຖືກມອບໃຫ້ເປັນການໂຕ້ຖຽງແຍກຕ່າງຫາກທັນທີປະຕິບັດຕາມທາງເລືອກທີ່
ຮຽກຮ້ອງໃຫ້ພວກເຂົາ. ຍົກຕົວຢ່າງ, --trace-ສັນຍາລັກ ຟູ ແລະ --trace-symbol=foo ທຽບເທົ່າ.
ຕົວຫຍໍ້ທີ່ເປັນເອກະລັກຂອງຊື່ຂອງຕົວເລືອກຫຼາຍຕົວແມ່ນໄດ້ຮັບການຍອມຮັບ.
ຫມາຍເຫດ --- ຖ້າຕົວເຊື່ອມຕໍ່ຈະຖືກເອີ້ນໂດຍທາງອ້ອມ, ຜ່ານໄດເວີລວບລວມ (ຕົວຢ່າງ gcc) ແລ້ວ
ຕົວເລືອກເສັ້ນຄໍາສັ່ງ linker ທັງຫມົດຄວນຈະຖືກນໍາຫນ້າໂດຍ -Wl, (ຫຼືໃດກໍ່ຕາມທີ່ເຫມາະສົມ
ສໍາລັບການຂັບ compiler ໂດຍສະເພາະ) ເຊັ່ນນີ້:
gcc -Wl,--start-group foo.o bar.o -Wl,--end-group
ນີ້ແມ່ນສິ່ງສໍາຄັນ, ເພາະວ່າຖ້າບໍ່ດັ່ງນັ້ນໂຄງການໄດເວີ compiler ອາດຈະຫຼຸດລົງຢ່າງງຽບໆ
ຕົວເລືອກຕົວເຊື່ອມຕໍ່, ສົ່ງຜົນໃຫ້ການເຊື່ອມຕໍ່ທີ່ບໍ່ດີ. ຄວາມສັບສົນກໍ່ອາດຈະເກີດຂື້ນໃນເວລາທີ່ທາງເລືອກທີ່ຜ່ານ
ທີ່ຕ້ອງການຄ່າຜ່ານໄດເວີ, ເປັນການໃຊ້ຊ່ອງຫວ່າງລະຫວ່າງທາງເລືອກແລະການໂຕ້ຖຽງ
ເຮັດຫນ້າທີ່ເປັນຕົວແຍກ, ແລະເຮັດໃຫ້ຄົນຂັບຜ່ານທາງເລືອກພຽງແຕ່ກັບຕົວເຊື່ອມຕໍ່ແລະ
ການໂຕ້ຖຽງກັບ compiler. ໃນກໍລະນີນີ້, ມັນງ່າຍທີ່ສຸດທີ່ຈະໃຊ້ຮູບແບບທີ່ເຂົ້າຮ່ວມຂອງທັງສອງ
ໂຕເລືອກຕົວອັກສອນດຽວ ແລະຫຼາຍຕົວ, ເຊັ່ນ:
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
ນີ້ແມ່ນຕາຕະລາງຂອງຕົວປ່ຽນເສັ້ນຄໍາສັ່ງທົ່ວໄປທີ່ຍອມຮັບໂດຍຕົວເຊື່ອມຕໍ່ GNU:
@ເອກະສານ
ອ່ານຕົວເລືອກແຖວຄໍາສັ່ງຈາກ ເອກະສານ. ທາງເລືອກທີ່ອ່ານໄດ້ຖືກໃສ່ແທນທີ່ຂອງ
ຕົ້ນສະບັບ @ເອກະສານ ທາງເລືອກ. ຖ້າ ເອກະສານ ບໍ່ມີ, ຫຼືບໍ່ສາມາດອ່ານໄດ້, ຫຼັງຈາກນັ້ນທາງເລືອກ
ຈະໄດ້ຮັບການປິ່ນປົວທີ່ຮູ້ຫນັງສື, ແລະບໍ່ໄດ້ຮັບການໂຍກຍ້າຍອອກ.
ຕົວເລືອກຕ່າງໆໃນ ເອກະສານ ຖືກແຍກອອກໂດຍຊ່ອງຫວ່າງ. ອາດມີຕົວອັກສອນຊ່ອງຫວ່າງໃສ່ນຳ
ໃນທາງເລືອກໂດຍການອ້ອມຮອບທາງເລືອກທັງຫມົດໃນວົງຢືມດຽວຫຼືຄູ່. ໃດ
ຕົວອັກສອນ (ລວມທັງ backslash) ອາດຈະຖືກລວມເຂົ້າໂດຍການນໍາຫນ້າຕົວອັກສອນທີ່ຈະເປັນ
ລວມໄປດ້ວຍ backslash. ໄດ້ ເອກະສານ ຕົວຂອງມັນເອງອາດຈະມີ @ ເພີ່ມເຕີມເອກະສານ ທາງເລືອກ; ໃດ
ທາງເລືອກດັ່ງກ່າວຈະຖືກປະມວນຜົນແບບ recursively.
-a ຄໍາ
ທາງເລືອກນີ້ແມ່ນສະຫນັບສະຫນູນສໍາລັບການເຂົ້າກັນໄດ້ HP / UX. ໄດ້ ຄໍາ ການໂຕ້ຖຽງຕ້ອງເປັນຫນຶ່ງໃນ
ຊ່ອຍແນ່ ເກັບ, ແບ່ງປັນ, ຫຼື Default. - ຮວບຮວມ ແມ່ນຫນ້າທີ່ທຽບເທົ່າກັບ
-Bstatic, ແລະອີກສອງຄໍາທີ່ໃຊ້ໄດ້ທຽບເທົ່າກັບ -Bdynamic. ນີ້
ທາງເລືອກອາດຈະຖືກນໍາໃຊ້ຈໍານວນຂອງເວລາໃດຫນຶ່ງ.
--ການກວດສອບ ການກວດສອບ
Adds ການກວດສອບ ໄປຫາລາຍການ "DT_AUDIT" ຂອງພາກສ່ວນໄດນາມິກ. ການກວດສອບ ບໍ່ໄດ້ກວດສອບ
ສໍາລັບການມີຢູ່, ມັນຈະບໍ່ໃຊ້ DT_SONAME ທີ່ລະບຸໄວ້ໃນຫ້ອງສະໝຸດ. ຖ້າລະບຸ
ຫຼາຍຄັ້ງ "DT_AUDIT" ຈະມີບັນຊີລາຍຊື່ທີ່ແຍກອອກເປັນຈໍ້າສອງເມັດຂອງສ່ວນຕິດຕໍ່ການກວດສອບເພື່ອ
ໃຊ້. ຖ້າຕົວເຊື່ອມຕໍ່ຊອກຫາວັດຖຸທີ່ມີລາຍການກວດສອບໃນຂະນະທີ່ຊອກຫາການແບ່ງປັນ
ຫ້ອງສະຫມຸດ, ມັນຈະເພີ່ມ "DT_DEPAAUDIT" ທີ່ສອດຄ້ອງກັນໃນໄຟລ໌ຜົນຜະລິດ. ນີ້
ທາງເລືອກແມ່ນມີຄວາມຫມາຍພຽງແຕ່ໃນເວທີ ELF ສະຫນັບສະຫນູນການໂຕ້ຕອບ rtld-audit.
-A ຖາປັດຕະຍະ
--ສະຖາປັດຕະຍະກຳ=ຖາປັດຕະຍະ
ໃນການປ່ອຍປະຈຸບັນຂອງ ld, ທາງເລືອກນີ້ແມ່ນເປັນປະໂຫຍດພຽງແຕ່ສໍາລັບຄອບຄົວ Intel 960 ຂອງ
ສະຖາປັດຕະຍະກໍາ. ໃນນັ້ນ ld ການຕັ້ງຄ່າ, ໄດ້ ຖາປັດຕະຍະ ການໂຕ້ຖຽງກໍານົດການ
ສະຖາປັດຕະຍະກໍາໂດຍສະເພາະໃນຄອບຄົວ 960, ເຮັດໃຫ້ການປົກປ້ອງບາງຢ່າງແລະດັດແປງ
ເສັ້ນທາງຄົ້ນຫາ archive-library.
ການປ່ອຍໃນອະນາຄົດຂອງ ld ອາດຈະສະຫນັບສະຫນູນການເຮັດວຽກທີ່ຄ້າຍຄືກັນສໍາລັບສະຖາປັດຕະຍະກໍາອື່ນໆ
ຄອບຄົວ.
-b ຮູບແບບການປ້ອນຂໍ້ມູນ
--format=ຮູບແບບການປ້ອນຂໍ້ມູນ
ld ອາດຈະໄດ້ຮັບການຕັ້ງຄ່າເພື່ອສະຫນັບສະຫນູນຫຼາຍກ່ວາຫນຶ່ງປະເພດຂອງໄຟລ໌ວັດຖຸ. ຖ້າເຈົ້າ ld is
configured ດ້ວຍວິທີນີ້, ທ່ານສາມາດນໍາໃຊ້ -b ທາງເລືອກທີ່ຈະລະບຸຮູບແບບຖານສອງສໍາລັບການປ້ອນຂໍ້ມູນ
ໄຟລ໌ວັດຖຸທີ່ປະຕິບັດຕາມຕົວເລືອກນີ້ຢູ່ໃນເສັ້ນຄໍາສັ່ງ. ເຖິງແມ່ນວ່າເວລາ ld ຖືກຕັ້ງຄ່າ
ເພື່ອສະຫນັບສະຫນູນຮູບແບບວັດຖຸທາງເລືອກ, ທ່ານບໍ່ຈໍາເປັນຕ້ອງກໍານົດນີ້, ເປັນ ld
ຄວນຈະຖືກຕັ້ງຄ່າໃຫ້ຄາດຫວັງເປັນຮູບແບບການປ້ອນຂໍ້ມູນເລີ່ມຕົ້ນເປັນຮູບແບບປົກກະຕິທີ່ສຸດໃນແຕ່ລະ
ເຄື່ອງຈັກ. ຮູບແບບການປ້ອນຂໍ້ມູນ ແມ່ນສະຕຣິງຂໍ້ຄວາມ, ຊື່ຂອງຮູບແບບສະເພາະທີ່ສະຫນັບສະຫນູນໂດຍ
ຫ້ອງສະຫມຸດ BFD. (ທ່ານສາມາດລາຍຊື່ຮູບແບບຄູ່ທີ່ມີຢູ່ກັບ objdump -i.)
ທ່ານອາດຈະຕ້ອງການໃຊ້ທາງເລືອກນີ້ຖ້າຫາກວ່າທ່ານກໍາລັງເຊື່ອມຕໍ່ໄຟລ໌ທີ່ມີ binary ຜິດປົກກະຕິ
ຮູບແບບ. ນອກນັ້ນທ່ານຍັງສາມາດນໍາໃຊ້ -b ເພື່ອປ່ຽນຮູບແບບຢ່າງຈະແຈ້ງ (ເມື່ອເຊື່ອມຕໍ່ໄຟລ໌ວັດຖຸ
ຂອງຮູບແບບທີ່ແຕກຕ່າງກັນ), ໂດຍລວມ -b ຮູບແບບການປ້ອນຂໍ້ມູນ ກ່ອນແຕ່ລະກຸ່ມຂອງໄຟລ໌ວັດຖຸ
ໃນຮູບແບບສະເພາະ.
ຮູບແບບເລີ່ມຕົ້ນແມ່ນເອົາມາຈາກຕົວແປສະພາບແວດລ້ອມ "GNUTARGET".
ນອກນັ້ນທ່ານຍັງສາມາດກໍານົດຮູບແບບການປ້ອນຂໍ້ມູນຈາກສະຄິບ, ໂດຍໃຊ້ຄໍາສັ່ງ "TARGET";
-c MRI-commandfile
--mri-script=MRI-commandfile
ສໍາລັບຄວາມເຂົ້າກັນໄດ້ກັບຕົວເຊື່ອມຕໍ່ທີ່ຜະລິດໂດຍ MRI, ld ຍອມຮັບໄຟລ໌ສະຄິບທີ່ຂຽນເປັນ
ພາສາຄຳສັ່ງສະລັບກັນ, ຖືກຈຳກັດ, ອະທິບາຍໄວ້ໃນ MRI Compatible Script Files
ພາກສ່ວນຂອງເອກະສານ GNU ld. ແນະນຳໄຟລ໌ສະຄຣິບ MRI ດ້ວຍທາງເລືອກ -c; ການນໍາໃຊ້
ໄດ້ -T ທາງເລືອກທີ່ຈະດໍາເນີນການ linker scripts ຂຽນໃນຈຸດປະສົງທົ່ວໄປ ld scripting
ພາສາ. ຖ້າ MRI-cmdfile ບໍ່ມີ, ld ຊອກຫາມັນຢູ່ໃນໄດເລກະທໍລີທີ່ລະບຸໄວ້
ໂດຍໃດໆ -L ຕົວເລືອກ
-d
-dc
-dp ສາມທາງເລືອກນີ້ແມ່ນທຽບເທົ່າ; ຫຼາຍຮູບແບບແມ່ນສະຫນັບສະຫນູນສໍາລັບການເຂົ້າກັນໄດ້
ກັບຕົວເຊື່ອມຕໍ່ອື່ນໆ. ພວກເຂົາມອບພື້ນທີ່ໃຫ້ກັບສັນຍາລັກທົ່ວໄປເຖິງແມ່ນວ່າຜົນຜະລິດທີ່ສາມາດຍ້າຍໄດ້
ໄຟລ໌ຖືກລະບຸ (ມີ -r). ຄໍາສັ່ງສະຄຣິບ "FORCE_COMMON_ALLOCATION" ມີ
ຜົນກະທົບດຽວກັນ.
-- ຂາດບັນຊີ ການກວດສອບ
-P ການກວດສອບ
Adds ການກວດສອບ ໄປຫາລາຍການ "DT_DEPAUDIT" ຂອງພາກສ່ວນໄດນາມິກ. ການກວດສອບ ບໍ່ແມ່ນ
ກວດເບິ່ງວ່າມີຢູ່ແລ້ວ, ຫຼືມັນຈະບໍ່ໃຊ້ DT_SONAME ທີ່ລະບຸໄວ້ໃນຫ້ອງສະຫມຸດ. ຖ້າ
ທີ່ລະບຸໄວ້ຫຼາຍຄັ້ງ "DT_DEPAAUDIT" ຈະມີລາຍການກວດສອບທີ່ແຍກອອກຈາກຈໍ້າສອງເມັດ
ການໂຕ້ຕອບທີ່ຈະນໍາໃຊ້. ທາງເລືອກນີ້ແມ່ນມີຄວາມຫມາຍພຽງແຕ່ໃນເວທີ ELF ສະຫນັບສະຫນູນ
rtld-audit interface. ທາງເລືອກ -P ໄດ້ຖືກສະຫນອງໃຫ້ສໍາລັບການເຂົ້າກັນໄດ້ຂອງ Solaris.
-e entry
--ເຂົ້າ=entry
ການນໍາໃຊ້ entry ເປັນສັນຍາລັກທີ່ຊັດເຈນສໍາລັບການເລີ່ມຕົ້ນການປະຕິບັດໂຄງການຂອງທ່ານ, ແທນທີ່ຈະ
ຈຸດເຂົ້າເລີ່ມຕົ້ນ. ຖ້າບໍ່ມີສັນຍາລັກທີ່ມີຊື່ entry, linker ຈະພະຍາຍາມ
ແຍກ entry ເປັນຕົວເລກ, ແລະໃຊ້ເປັນທີ່ຢູ່ເຂົ້າ (ຕົວເລກຈະເປັນ
ຕີລາຄາໃນຖານ 10; ເຈົ້າອາດຈະໃຊ້ຕົວນໍາ 0x ສໍາລັບພື້ນຖານ 16, ຫຼືຊັ້ນນໍາ 0 ສໍາລັບພື້ນຖານ
8).
--exclude-libs lib,lib...
ລະບຸລາຍຊື່ຂອງຄັງເກັບມ້ຽນທີ່ສັນຍາລັກບໍ່ຄວນອັດຕະໂນມັດ
ສົ່ງອອກ. ຊື່ຫ້ອງສະໝຸດອາດຈະຖືກຈຳກັດດ້ວຍເຄື່ອງໝາຍຈຸດ ຫຼືຈໍ້າສອງເມັດ. ການລະບຸ
"--exclude-libs ALL" ບໍ່ລວມເອົາສັນຍາລັກໃນຄັງເກັບມ້ຽນທັງໝົດຈາກການສົ່ງອອກອັດຕະໂນມັດ.
ທາງເລືອກນີ້ແມ່ນມີພຽງແຕ່ສໍາລັບ i386 PE ທີ່ Port ເປົ້າຫມາຍຂອງ linker ແລະສໍາລັບ ELF
ທ່າເຮືອເປົ້າໝາຍ. ສຳລັບ i386 PE, ສັນຍາລັກທີ່ລະບຸໄວ້ຢ່າງຈະແຈ້ງໃນໄຟລ໌ .def ແມ່ນຍັງຢູ່
ສົ່ງອອກ, ໂດຍບໍ່ຄໍານຶງເຖິງທາງເລືອກນີ້. ສໍາລັບທ່າເຮືອເປົ້າຫມາຍ ELF, ສັນຍາລັກທີ່ໄດ້ຮັບຜົນກະທົບຈາກນີ້
ທາງເລືອກຈະຖືກຖືວ່າຖືກເຊື່ອງໄວ້.
--exclude-modules-for-implib ໂມດູນ,ໂມດູນ...
ລະບຸລາຍຊື່ຂອງໄຟລ໌ວັດຖຸ ຫຼືສະມາຊິກໃນແຟ້ມຈັດເກັບ, ສັນຍາລັກທີ່ບໍ່ຄວນເປັນ
ອັດຕະໂນມັດສົ່ງອອກ, ແຕ່ວ່າຄວນຈະຖືກຄັດລອກຂາຍຍົກເຂົ້າໄປໃນຫ້ອງສະຫມຸດນໍາເຂົ້າ
ຖືກສ້າງຂື້ນໃນລະຫວ່າງການເຊື່ອມຕໍ່. ຊື່ໂມດູນອາດຈະຖືກຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດ ຫຼື
ຈໍ້າສອງເມັດ, ແລະຕ້ອງກົງກັບຊື່ໄຟລ໌ທີ່ໃຊ້ໂດຍ ld ເປີດໄຟລ໌; ສໍາລັບການເກັບ
ສະມາຊິກ, ນີ້ແມ່ນພຽງແຕ່ຊື່ສະມາຊິກ, ແຕ່ສໍາລັບໄຟລ໌ວັດຖຸ, ຊື່ທີ່ລະບຸໄວ້ຕ້ອງ
ຮວມ ແລະກົງກັບເສັ້ນທາງໃດນຶ່ງທີ່ໃຊ້ເພື່ອລະບຸໄຟລ໌ປ້ອນຂໍ້ມູນຢູ່ໃນຕົວເຊື່ອມຕໍ່
ເສັ້ນຄໍາສັ່ງ. ທາງເລືອກນີ້ແມ່ນມີພຽງແຕ່ສໍາລັບ i386 PE ເປົ້າຫມາຍພອດຂອງ
ຕົວເຊື່ອມຕໍ່. ສັນຍາລັກທີ່ລະບຸໄວ້ຢ່າງຊັດເຈນຢູ່ໃນໄຟລ໌ .def ແມ່ນຍັງຖືກສົ່ງອອກ, ບໍ່ວ່າຈະເປັນ
ທາງເລືອກນີ້.
-E
--ການສົ່ງອອກ-ແບບເຄື່ອນໄຫວ
--no-export-dynamic
ເມື່ອສ້າງການເຊື່ອມໂຍງແບບເຄື່ອນໄຫວທີ່ສາມາດປະຕິບັດໄດ້, ການນໍາໃຊ້ -E ທາງເລືອກຫຼື
--ການສົ່ງອອກ-ແບບເຄື່ອນໄຫວ ທາງເລືອກເຮັດໃຫ້ຕົວເຊື່ອມຕໍ່ເພີ່ມສັນຍາລັກທັງຫມົດໃຫ້ກັບສັນຍາລັກແບບເຄື່ອນໄຫວ
ໂຕະ. ຕາຕະລາງສັນຍາລັກແບບເຄື່ອນໄຫວແມ່ນຊຸດຂອງສັນຍາລັກທີ່ເຫັນໄດ້ຈາກແບບເຄື່ອນໄຫວ
ວັດຖຸໃນເວລາແລ່ນ.
ຖ້າຫາກວ່າທ່ານບໍ່ໄດ້ນໍາໃຊ້ທັງສອງທາງເລືອກເຫຼົ່ານີ້ (ຫຼືການນໍາໃຊ້ --no-export-dynamic ທາງເລືອກທີ່ຈະ
ຟື້ນຟູພຶດຕິກໍາເລີ່ມຕົ້ນ), ຕາຕະລາງສັນຍາລັກແບບເຄື່ອນໄຫວຕາມປົກກະຕິຈະມີພຽງແຕ່
ສັນຍາລັກເຫຼົ່ານັ້ນທີ່ຖືກອ້າງອີງໂດຍບາງວັດຖຸເຄື່ອນໄຫວທີ່ໄດ້ກ່າວມາໃນການເຊື່ອມຕໍ່.
ຖ້າທ່ານໃຊ້ "dlopen" ເພື່ອໂຫລດວັດຖຸແບບເຄື່ອນໄຫວທີ່ຕ້ອງການສົ່ງຄືນກັບສັນຍາລັກ
ກໍານົດໂດຍໂຄງການ, ແທນທີ່ຈະເປັນບາງວັດຖຸແບບເຄື່ອນໄຫວອື່ນໆ, ຫຼັງຈາກນັ້ນທ່ານອາດຈະ
ຈໍາເປັນຕ້ອງໃຊ້ຕົວເລືອກນີ້ເມື່ອເຊື່ອມຕໍ່ໂປຼແກຼມຂອງມັນເອງ.
ທ່ານຍັງສາມາດໃຊ້ບັນຊີລາຍຊື່ແບບເຄື່ອນໄຫວເພື່ອຄວບຄຸມສິ່ງທີ່ສັນຍາລັກຄວນຖືກເພີ່ມໃສ່
ຕາຕະລາງສັນຍາລັກແບບເຄື່ອນໄຫວຖ້າຮູບແບບຜົນຜະລິດສະຫນັບສະຫນູນມັນ. ເບິ່ງລາຍລະອຽດຂອງ
--ລາຍການແບບໄດນາມິກ.
ໃຫ້ສັງເກດວ່າທາງເລືອກນີ້ແມ່ນສະເພາະກັບພອດເປົ້າຫມາຍ ELF. ເປົ້າຫມາຍ PE ສະຫນັບສະຫນູນທີ່ຄ້າຍຄືກັນ
ຟັງຊັນເພື່ອສົ່ງອອກສັນຍາລັກທັງຫມົດຈາກ DLL ຫຼື EXE; ເບິ່ງລາຍລະອຽດຂອງ
--ສົ່ງອອກ-ທັງໝົດ-ສັນຍາລັກ ຂ້າງລຸ່ມນີ້.
-EB ເຊື່ອມຕໍ່ວັດຖຸໃຫຍ່. ນີ້ມີຜົນກະທົບຮູບແບບຜົນຜະລິດເລີ່ມຕົ້ນ.
- THE ເຊື່ອມຕໍ່ວັດຖຸນ້ອຍ-endian. ນີ້ມີຜົນກະທົບຮູບແບບຜົນຜະລິດເລີ່ມຕົ້ນ.
-f ຊື່
--auxiliary=ຊື່
ເມື່ອສ້າງວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ ELF, ໃຫ້ຕັ້ງຊ່ອງຂໍ້ມູນ DT_AUXILIARY ພາຍໃນເປັນ
ຊື່ທີ່ລະບຸ. ນີ້ບອກຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວທີ່ຕາຕະລາງສັນຍາລັກຂອງການແບ່ງປັນ
ວັດຖຸຄວນຖືກໃຊ້ເປັນຕົວກອງຊ່ວຍໃນຕາຕະລາງສັນຍາລັກຂອງວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ
ຊື່.
ຖ້າຫາກວ່າທ່ານຕໍ່ມາເຊື່ອມຕໍ່ໂຄງການກັບວັດຖຸຕົວກັ່ນຕອງນີ້, ຫຼັງຈາກນັ້ນ, ໃນເວລາທີ່ທ່ານດໍາເນີນການ
ໂປຣແກຣມ, ຕົວເຊື່ອມຕໍ່ແບບໄດນາມິກຈະເຫັນຊ່ອງຂໍ້ມູນ DT_AUXILIARY. ຖ້າຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວ
ແກ້ໄຂສັນຍາລັກໃດໆຈາກວັດຖຸການກັ່ນຕອງ, ມັນທໍາອິດຈະກວດເບິ່ງວ່າມີ
ຄໍານິຍາມໃນວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ ຊື່. ຖ້າມີອັນໜຶ່ງ, ມັນຈະຖືກໃຊ້ແທນ
ຄໍານິຍາມໃນວັດຖຸການກັ່ນຕອງ. ວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ ຊື່ ບໍ່ຈໍາເປັນຕ້ອງມີ. ດັ່ງນັ້ນຈຶ່ງ
ວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ ຊື່ ອາດຈະຖືກນໍາໃຊ້ເພື່ອສະຫນອງທາງເລືອກການປະຕິບັດທີ່ແນ່ນອນ
ຟັງຊັນ, ບາງທີອາດສໍາລັບການ debugging ຫຼືສໍາລັບການປະຕິບັດສະເພາະຂອງເຄື່ອງຈັກ.
ຕົວເລືອກນີ້ອາດຈະຖືກລະບຸຫຼາຍກວ່າຫນຶ່ງຄັ້ງ. ລາຍການ DT_AUXILIARY ຈະຖືກສ້າງຂື້ນ
ໃນຄໍາສັ່ງທີ່ພວກເຂົາປາກົດຢູ່ໃນເສັ້ນຄໍາສັ່ງ.
-F ຊື່
--filter=ຊື່
ເມື່ອສ້າງວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ ELF, ຕັ້ງຊ່ອງຂໍ້ມູນ DT_FILTER ພາຍໃນໃຫ້ເປັນທີ່ລະບຸ
ຊື່. ນີ້ບອກຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວທີ່ຕາຕະລາງສັນຍາລັກຂອງວັດຖຸທີ່ໃຊ້ຮ່ວມກັນເຊິ່ງ
ກໍາລັງຖືກສ້າງຂື້ນຄວນຈະຖືກນໍາໃຊ້ເປັນຕົວກອງໃນຕາຕະລາງສັນຍາລັກຂອງວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ
ຊື່.
ຖ້າຫາກວ່າທ່ານຕໍ່ມາເຊື່ອມຕໍ່ໂຄງການກັບວັດຖຸຕົວກັ່ນຕອງນີ້, ຫຼັງຈາກນັ້ນ, ໃນເວລາທີ່ທ່ານດໍາເນີນການ
ໂປຣແກຣມ, ຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວຈະເຫັນຊ່ອງຂໍ້ມູນ DT_FILTER. ຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວຈະ
ແກ້ໄຂສັນຍາລັກຕາມຕາຕະລາງສັນຍາລັກຂອງວັດຖຸການກັ່ນຕອງຕາມປົກກະຕິ, ແຕ່ມັນ
ຕົວຈິງແລ້ວຈະເຊື່ອມຕໍ່ກັບຄໍານິຍາມທີ່ພົບເຫັນຢູ່ໃນວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ ຊື່. ດັ່ງນັ້ນ
ວັດຖຸການກັ່ນຕອງສາມາດໃຊ້ເພື່ອເລືອກຊຸດຍ່ອຍຂອງສັນຍາລັກທີ່ສະໜອງໃຫ້ໂດຍວັດຖຸ
ຊື່.
ບາງຕົວເຊື່ອມຕໍ່ເກົ່າໃຊ້ -F ທາງເລືອກໃນທົ່ວລະບົບຕ່ອງໂສ້ເຄື່ອງມືການລວບລວມສໍາລັບ
ການລະບຸຮູບແບບໄຟລ໌ວັດຖຸສໍາລັບທັງໄຟລ໌ວັດຖຸເຂົ້າ ແລະຜົນຜະລິດ. ຕົວເຊື່ອມຕໍ່ GNU
ນໍາໃຊ້ກົນໄກອື່ນໆສໍາລັບຈຸດປະສົງນີ້: the -b, -- ຮູບແບບ, -- ຮູບແບບ ທາງເລືອກ, ໄດ້
ຄໍາສັ່ງ "TARGET" ໃນຕົວເຊື່ອມຕໍ່ສະຄຣິບ, ແລະຕົວແປສະພາບແວດລ້ອມ "GNUTARGET". GNU
linker ຈະບໍ່ສົນໃຈ -F ທາງເລືອກໃນເວລາທີ່ບໍ່ສ້າງວັດຖຸແບ່ງປັນ ELF.
-fini=ຊື່
ເມື່ອສ້າງ ELF ປະຕິບັດຫຼືແບ່ງປັນວັດຖຸ, ໂທຫາ NAME ເມື່ອປະຕິບັດໄດ້ຫຼື
ວັດຖຸທີ່ໃຊ້ຮ່ວມກັນຖືກຍົກເລີກການໂຫຼດ, ໂດຍການຕັ້ງຄ່າ DT_FINI ເປັນທີ່ຢູ່ຂອງຟັງຊັນ. ໂດຍ
ຄ່າເລີ່ມຕົ້ນ, ຕົວເຊື່ອມຕໍ່ໃຊ້ "_fini" ເປັນຫນ້າທີ່ໂທຫາ.
-g ບໍ່ສົນໃຈ. ສະຫນອງສໍາລັບຄວາມເຂົ້າກັນໄດ້ກັບເຄື່ອງມືອື່ນໆ.
-G ມູນຄ່າ
--gpsize=ມູນຄ່າ
ກໍານົດຂະຫນາດສູງສຸດຂອງວັດຖຸທີ່ຈະປັບປຸງໂດຍນໍາໃຊ້ GP ລົງທະບຽນເພື່ອ ຂະຫນາດ. ນີ້
ມີຄວາມຫມາຍພຽງແຕ່ສໍາລັບຮູບແບບໄຟລ໌ວັດຖຸເຊັ່ນ MIPS ELF ທີ່ສະຫນັບສະຫນູນການວາງຂະຫນາດໃຫຍ່
ແລະວັດຖຸຂະຫນາດນ້ອຍເຂົ້າໄປໃນພາກສ່ວນຕ່າງໆ. ອັນນີ້ຖືກລະເລີຍສຳລັບໄຟລ໌ວັດຖຸອື່ນ
ຮູບແບບຕ່າງໆ.
-h ຊື່
-sonname=ຊື່
ເມື່ອສ້າງວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ ELF, ຕັ້ງຊ່ອງຂໍ້ມູນ DT_SONAME ພາຍໃນໃຫ້ເປັນທີ່ລະບຸ
ຊື່. ເມື່ອ executable ເຊື່ອມໂຍງກັບວັດຖຸທີ່ໃຊ້ຮ່ວມກັນທີ່ມີຊ່ອງຂໍ້ມູນ DT_SONAME,
ຫຼັງຈາກນັ້ນ, ໃນເວລາທີ່ປະຕິບັດການດໍາເນີນການ, ຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວຈະພະຍາຍາມໂຫລດການແບ່ງປັນ
ວັດຖຸທີ່ລະບຸໄວ້ໂດຍຊ່ອງຂໍ້ມູນ DT_SONAME ແທນທີ່ຈະໃຊ້ຊື່ໄຟລ໌ທີ່ມອບໃຫ້
ຕົວເຊື່ອມຕໍ່.
-i ດໍາເນີນການເຊື່ອມຕໍ່ທີ່ເພີ່ມຂຶ້ນ (ຄືກັນກັບທາງເລືອກ -r).
-init=ຊື່
ເມື່ອສ້າງ ELF ປະຕິບັດຫຼືແບ່ງປັນວັດຖຸ, ໂທຫາ NAME ເມື່ອປະຕິບັດໄດ້ຫຼື
ວັດຖຸທີ່ໃຊ້ຮ່ວມກັນຖືກໂຫລດ, ໂດຍການຕັ້ງຄ່າ DT_INIT ເປັນທີ່ຢູ່ຂອງຟັງຊັນ. ໂດຍ
ຄ່າເລີ່ມຕົ້ນ, ຕົວເຊື່ອມຕໍ່ໃຊ້ "_init" ເປັນຫນ້າທີ່ໂທຫາ.
-l ນາມສະກຸນ
--library=ນາມສະກຸນ
ເພີ່ມແຟ້ມຈັດເກັບ ຫຼືວັດຖຸທີ່ລະບຸໄວ້ໂດຍ ນາມສະກຸນ ໄປຫາບັນຊີລາຍຊື່ຂອງໄຟລ໌ທີ່ຈະເຊື່ອມຕໍ່.
ຕົວເລືອກນີ້ອາດຈະຖືກໃຊ້ທຸກຄັ້ງ. ຖ້າ ນາມສະກຸນ ເປັນຂອງຮູບແບບ :ຊື່ເອກະສານ, ld
ຈະຄົ້ນຫາເສັ້ນທາງຫ້ອງສະຫມຸດສໍາລັບໄຟລ໌ທີ່ເອີ້ນວ່າ ຊື່ເອກະສານຖ້າບໍ່ດັ່ງນັ້ນມັນຈະຄົ້ນຫາ
ເສັ້ນທາງຫ້ອງສະຫມຸດສໍາລັບໄຟລ໌ທີ່ເອີ້ນວ່າ libnamespec.a.
ກ່ຽວກັບລະບົບທີ່ສະຫນັບສະຫນູນຫ້ອງສະຫມຸດຮ່ວມກັນ, ld ອາດຈະຊອກຫາໄຟລ໌ອື່ນນອກຈາກ
libnamespec.a. ໂດຍສະເພາະ, ໃນລະບົບ ELF ແລະ SunOS, ld ຈະຄົ້ນຫາໄດເລກະທໍລີສໍາລັບ
ຫໍສະຫມຸດທີ່ເອີ້ນວ່າ libnamespec.so ກ່ອນທີ່ຈະຊອກຫາອັນທີ່ເອີ້ນວ່າ libnamespec.a. (ໂດຍ
ສົນທິສັນຍາ, ນາມສະກຸນ ".so" ຊີ້ໃຫ້ເຫັນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ.) ໃຫ້ສັງເກດວ່າພຶດຕິກໍານີ້
ບໍ່ໄດ້ນໍາໃຊ້ກັບ :ຊື່ເອກະສານ, ເຊິ່ງສະເຫມີກໍານົດໄຟລ໌ທີ່ເອີ້ນວ່າ ຊື່ເອກະສານ.
ຕົວເຊື່ອມຕໍ່ຈະຄົ້ນຫາບ່ອນເກັບມ້ຽນພຽງແຕ່ຄັ້ງດຽວ, ຢູ່ທີ່ສະຖານທີ່ທີ່ມັນຖືກລະບຸໄວ້
ເສັ້ນຄໍາສັ່ງ. ຖ້າບ່ອນເກັບມ້ຽນກໍານົດສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດໄວ້ໃນບາງວັດຖຸ
ເຊິ່ງປາກົດຢູ່ກ່ອນບ່ອນເກັບມ້ຽນຢູ່ໃນເສັ້ນຄໍາສັ່ງ, ຕົວເຊື່ອມຕໍ່ຈະປະກອບມີ
ໄຟລ໌ທີ່ເຫມາະສົມຈາກບ່ອນເກັບມ້ຽນ. ຢ່າງໃດກໍຕາມ, ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດຢູ່ໃນວັດຖຸ
ການປະກົດຕົວຕໍ່ມາໃນແຖວຄໍາສັ່ງຈະບໍ່ເຮັດໃຫ້ຕົວເຊື່ອມຕໍ່ຊອກຫາບ່ອນເກັບມ້ຽນ
ອີກເທື່ອຫນຶ່ງ.
ເບິ່ງ -( ທາງເລືອກສໍາລັບວິທີການທີ່ຈະບັງຄັບຕົວເຊື່ອມຕໍ່ເພື່ອຊອກຫາເກັບຫຼາຍຄັ້ງ.
ເຈົ້າອາດຈະຂຽນລາຍການເກັບມ້ຽນອັນດຽວກັນຫຼາຍຄັ້ງໃນແຖວຄຳສັ່ງ.
ປະເພດຂອງການຄົ້ນຫາທີ່ເກັບໄວ້ນີ້ແມ່ນມາດຕະຖານສໍາລັບຕົວເຊື່ອມຕໍ່ Unix. ຢ່າງໃດກໍຕາມ, ຖ້າທ່ານເປັນ
ການນໍາໃຊ້ ld ໃນ AIX, ໃຫ້ສັງເກດວ່າມັນແຕກຕ່າງຈາກພຶດຕິກໍາຂອງຕົວເຊື່ອມຕໍ່ AIX.
-L ຊອກຫາ
--library-path=ຊອກຫາ
ເພີ່ມເສັ້ນທາງ ຊອກຫາ ກັບບັນຊີລາຍຊື່ຂອງເສັ້ນທາງນັ້ນ ld ຈະຊອກຫາຫ້ອງສະຫມຸດເກັບຮັກສາໄວ້ແລະ
ld ສະຄຣິບຄວບຄຸມ. ເຈົ້າອາດຈະໃຊ້ຕົວເລືອກນີ້ທຸກຄັ້ງ. ໄດເລກະທໍລີແມ່ນ
ຄົ້ນຫາໃນຄໍາສັ່ງທີ່ພວກເຂົາຖືກລະບຸໄວ້ໃນເສັ້ນຄໍາສັ່ງ. ລາຍຊື່
ທີ່ລະບຸໄວ້ໃນເສັ້ນຄໍາສັ່ງຖືກຄົ້ນຫາກ່ອນໄດເລກະທໍລີມາດຕະຖານ. ທັງໝົດ -L
ທາງເລືອກໃນການໃຊ້ກັບທັງຫມົດ -l ທາງເລືອກ, ໂດຍບໍ່ສົນເລື່ອງຂອງຄໍາສັ່ງທີ່ທາງເລືອກໃນການປາກົດ.
-L ທາງເລືອກບໍ່ມີຜົນກະທົບແນວໃດ ld ຊອກຫາ script linker ເວັ້ນເສຍແຕ່ -T ທາງເລືອກແມ່ນ
ລະບຸ.
If ຊອກຫາ ເລີ່ມຕົ້ນດ້ວຍ "=", ຈາກນັ້ນ "=" ຈະຖືກແທນທີ່ດ້ວຍ sysroot ຄຳ ນຳ ໜ້າ,
ຄວບຄຸມໂດຍ --sysroot ທາງເລືອກ, ຫຼືກໍານົດເວລາທີ່ຕົວເຊື່ອມຕໍ່ຖືກຕັ້ງຄ່າ.
ຊຸດເລີ່ມຕົ້ນຂອງເສັ້ນທາງທີ່ຄົ້ນຫາ (ໂດຍບໍ່ໄດ້ລະບຸໄວ້ກັບ -L) ແມ່ນຂຶ້ນກັບທີ່
ຮູບແບບການຈຳລອງ ld ກໍາລັງໃຊ້, ແລະໃນບາງກໍລະນີຍັງກ່ຽວກັບວິທີທີ່ມັນຖືກຕັ້ງຄ່າ.
ເສັ້ນທາງຍັງສາມາດຖືກລະບຸໄວ້ໃນສະຄຣິບເຊື່ອມຕໍ່ດ້ວຍຄຳສັ່ງ "SEARCH_DIR".
ໄດເລກະທໍລີທີ່ລະບຸໄວ້ດ້ວຍວິທີນີ້ຖືກຄົ້ນຫາຢູ່ໃນຈຸດທີ່ script linker
ປາກົດຢູ່ໃນເສັ້ນຄໍາສັ່ງ.
-m ການເຮັດຕາມຕົວຢ່າງ
ເຮັດຕາມ ການເຮັດຕາມຕົວຢ່າງ ຕົວເຊື່ອມຕໍ່. ທ່ານສາມາດບັນຊີລາຍການ emulations ທີ່ມີຢູ່ກັບ
-- verbose or -V ຕົວເລືອກ
ຖ້າ -m ທາງເລືອກບໍ່ໄດ້ຖືກນໍາໃຊ້, ການຈໍາລອງແມ່ນເອົາມາຈາກ "LDEMULATION"
ຕົວແປສະພາບແວດລ້ອມ, ຖ້າມັນຖືກ ກຳ ນົດ.
ຖ້າບໍ່ດັ່ງນັ້ນ, emulation ໃນຕອນຕົ້ນແມ່ນຂຶ້ນກັບວິທີທີ່ຕົວເຊື່ອມຕໍ່ຖືກຕັ້ງຄ່າ.
-M
--print-ແຜນທີ່
ພິມແຜນທີ່ເຊື່ອມຕໍ່ໄປຫາຜົນໄດ້ຮັບມາດຕະຖານ. ແຜນທີ່ເຊື່ອມຕໍ່ໃຫ້ຂໍ້ມູນກ່ຽວກັບ
ການເຊື່ອມຕໍ່, ລວມທັງຕໍ່ໄປນີ້:
· ບ່ອນທີ່ໄຟລ໌ວັດຖຸຖືກແຜນທີ່ເຂົ້າໄປໃນຫນ່ວຍຄວາມຈໍາ.
· ການຈັດສັນສັນຍາລັກທົ່ວໄປແນວໃດ.
·ສະມາຊິກຮວບຮວມທັງຫມົດລວມຢູ່ໃນການເຊື່ອມຕໍ່, ດ້ວຍການກ່າວເຖິງສັນຍາລັກທີ່
ເຮັດໃຫ້ສະມາຊິກທີ່ເກັບມ້ຽນຖືກນໍາເຂົ້າມາ.
· ຄ່າທີ່ກໍານົດໃຫ້ກັບສັນຍາລັກ.
ໝາຍເຫດ - ສັນຍາລັກທີ່ມີມູນຄ່າຖືກຄຳນວນໂດຍການສະແດງອອກ ເຊິ່ງກ່ຽວຂ້ອງກັບ a
ການອ້າງອີງເຖິງຄ່າທີ່ຜ່ານມາຂອງສັນຍາລັກດຽວກັນອາດຈະບໍ່ມີຜົນທີ່ຖືກຕ້ອງ
ສະແດງຢູ່ໃນແຜນທີ່ເຊື່ອມຕໍ່. ນີ້ແມ່ນຍ້ອນວ່າຕົວເຊື່ອມຕໍ່ຍົກເລີກຕົວກາງ
ຜົນໄດ້ຮັບແລະພຽງແຕ່ຮັກສາຄ່າສຸດທ້າຍຂອງການສະແດງຜົນ. ພາຍໃຕ້ການດັ່ງກ່າວ
ສະຖານະການຕົວເຊື່ອມຕໍ່ຈະສະແດງຄ່າສຸດທ້າຍທີ່ອ້ອມຮອບດ້ວຍວົງເລັບສີ່ຫຼ່ຽມ.
ດັ່ງນັ້ນ, ສໍາລັບການຍົກຕົວຢ່າງ, script linker ປະກອບດ້ວຍ:
ຟູ = 1
foo = foo * 4
foo = foo + 8
ຈະຜະລິດຜົນຜະລິດດັ່ງຕໍ່ໄປນີ້ໃນແຜນທີ່ການເຊື່ອມຕໍ່ຖ້າຫາກວ່າ -M ທາງເລືອກແມ່ນການນໍາໃຊ້:
0x00000001 foo = 0x1
[0x0000000c] foo = (foo * 0x4)
[0x0000000c] foo = (foo + 0x8)
ເບິ່ງ ສຳ ນວນ ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບການສະແດງອອກໃນຕົວເຊື່ອມຕໍ່.
-n
--nmagic
ປິດການຈັດຮຽງຫນ້າຂອງພາກສ່ວນ, ແລະປິດການເຊື່ອມຕໍ່ກັບຫ້ອງສະຫມຸດທີ່ແບ່ງປັນ. ຖ້າ
ຮູບແບບຜົນຜະລິດສະຫນັບສະຫນູນຈໍານວນ magic ແບບ Unix, ຫມາຍຜົນຜະລິດເປັນ "NMAGIC".
-N
--ມະຫັດສະຈັນ
ກໍານົດພາກສ່ວນຂໍ້ຄວາມແລະຂໍ້ມູນເພື່ອໃຫ້ສາມາດອ່ານໄດ້ແລະຂຽນໄດ້. ນອກຈາກນັ້ນ, ຢ່າຈັດຮຽງຫນ້າ
ພາກສ່ວນຂໍ້ມູນ, ແລະປິດການເຊື່ອມຕໍ່ກັບຫ້ອງສະຫມຸດທີ່ແບ່ງປັນ. ຖ້າຫາກວ່າຮູບແບບຜົນຜະລິດ
ສະຫນັບສະຫນູນຕົວເລກ magic ແບບ Unix, ຫມາຍຜົນຜະລິດເປັນ "OMAGIC". ໝາຍເຫດ: ເຖິງແມ່ນວ່າ ກ
ພາກສ່ວນຂໍ້ຄວາມທີ່ສາມາດຂຽນໄດ້ແມ່ນອະນຸຍາດໃຫ້ສໍາລັບເປົ້າຫມາຍ PE-COFF, ມັນບໍ່ສອດຄ່ອງກັບ
ສະເພາະຮູບແບບທີ່ເຜີຍແຜ່ໂດຍ Microsoft.
--ບໍ່ມີມະນຸດສະທໍາ
ທາງເລືອກນີ້ negates ສ່ວນໃຫຍ່ຂອງຜົນກະທົບຂອງ -N ທາງເລືອກ. ມັນກໍານົດສ່ວນຂໍ້ຄວາມເປັນ
ອ່ານເທົ່ານັ້ນ, ແລະບັງຄັບໃຫ້ພາກສ່ວນຂໍ້ມູນຖືກຈັດຮຽງຕາມໜ້າ. ຫມາຍເຫດ - ທາງເລືອກນີ້ເຮັດ
ບໍ່ເປີດໃຊ້ການເຊື່ອມຕໍ່ກັບຫ້ອງສະຫມຸດທີ່ແບ່ງປັນ. ໃຊ້ -Bdynamic ສໍາລັບນີ້.
-o output
--output=output
ການນໍາໃຊ້ output ເປັນຊື່ສໍາລັບໂຄງການທີ່ຜະລິດໂດຍ ld; ຖ້າທາງເລືອກນີ້ບໍ່ແມ່ນ
ລະບຸ, ຊື່ ກ ຖືກໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ. ຄໍາສັ່ງ script "OUTPUT" ຍັງສາມາດ
ລະບຸຊື່ໄຟລ໌ຜົນຜະລິດ.
-O ລະດັບ
If ລະດັບ ແມ່ນຄ່າຕົວເລກທີ່ໃຫຍ່ກວ່າສູນ ld optimizes ຜົນຜະລິດ. ນີ້ອາດຈະ
ໃຊ້ເວລາຫຼາຍທີ່ສຸດແລະເພາະສະນັ້ນອາດຈະຄວນຈະໄດ້ຮັບການເປີດໃຊ້ງານພຽງແຕ່ສໍາລັບການສຸດທ້າຍ
ຄູ່. ໃນປັດຈຸບັນທາງເລືອກນີ້ມີຜົນກະທົບພຽງແຕ່ການສ້າງຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ ELF. ອະນາຄົດ
ການປ່ອຍຕົວເຊື່ອມຕໍ່ອາດຈະເຮັດໃຫ້ການນໍາໃຊ້ທາງເລືອກນີ້ຫຼາຍຂຶ້ນ. ນອກຈາກນີ້ໃນປັດຈຸບັນບໍ່ມີ
ຄວາມແຕກຕ່າງໃນພຶດຕິກໍາຂອງຕົວເຊື່ອມຕໍ່ສໍາລັບຄ່າທີ່ແຕກຕ່າງກັນທີ່ບໍ່ແມ່ນສູນຂອງທາງເລືອກນີ້.
ອີກເທື່ອຫນຶ່ງ, ນີ້ອາດຈະມີການປ່ຽນແປງກັບການປ່ອຍໃນອະນາຄົດ.
--push-state
ໄດ້ --push-state ອະນຸຍາດໃຫ້ເພື່ອປົກປັກຮັກສາລັດໃນປະຈຸບັນຂອງທຸງຊາດທີ່ປົກຄອງໄດ້
ການຈັດການໄຟລ໌ປ້ອນຂໍ້ມູນເພື່ອໃຫ້ພວກເຂົາເຈົ້າທັງຫມົດໄດ້ຮັບການຟື້ນຟູທີ່ມີຫນຶ່ງທີ່ສອດຄ້ອງກັນ
--pop-state ທາງເລືອກ.
ທາງເລືອກທີ່ໄດ້ຮັບການຄຸ້ມຄອງແມ່ນ: -Bdynamic, -Bstatic, -dn, -ດີ, -call_shared,
-non_shared, -static, -N, -n, --ຮວບຮວມທັງໝົດ, --no-whole-archive, -r, - ອ,
--copy-dt-needed-entries, --no-copy-dt-needed-entries, -- ຕາມຄວາມຕ້ອງການ, -- ບໍ່ຕ້ອງການ,
ແລະ -a.
ຫນຶ່ງເປົ້າຫມາຍສໍາລັບທາງເລືອກນີ້ແມ່ນສະເພາະສໍາລັບ pkg-config. ເມື່ອໃຊ້ກັບ
--libs ທາງເລືອກທັງຫມົດທີ່ເປັນໄປໄດ້ຫ້ອງສະຫມຸດທີ່ຈໍາເປັນແມ່ນໄດ້ລະບຸໄວ້ແລະຫຼັງຈາກນັ້ນເປັນໄປໄດ້ເຊື່ອມຕໍ່ກັບ
ຕະຫຼອດເວລາ. ມັນດີກວ່າທີ່ຈະກັບຄືນບາງສິ່ງບາງຢ່າງດັ່ງຕໍ່ໄປນີ້:
-Wl,--push-state,--ຕາມຄວາມຕ້ອງການ -libone -libtwo -Wl,--pop-state
ຍົກເລີກຜົນກະທົບຂອງ --push-state, ຟື້ນຟູຄ່າທີ່ຜ່ານມາຂອງທຸງທີ່ປົກຄອງ
ການຈັດການໄຟລ໌ປ້ອນຂໍ້ມູນ.
-q
--emit-relocs
ອອກຈາກພາກສ່ວນການຍົກຍ້າຍ ແລະເນື້ອໃນຢູ່ໃນຕົວປະຕິບັດທີ່ເຊື່ອມໂຍງຢ່າງຄົບຖ້ວນ. ລິ້ງໂພສ
ເຄື່ອງມືການວິເຄາະແລະການເພີ່ມປະສິດທິພາບອາດຈະຕ້ອງການຂໍ້ມູນນີ້ເພື່ອປະຕິບັດຢ່າງຖືກຕ້ອງ
ການດັດແກ້ຂອງການປະຕິບັດ. ອັນນີ້ສົ່ງຜົນໃຫ້ມີການປະຕິບັດທີ່ໃຫຍ່ກວ່າ.
ທາງເລືອກນີ້ໄດ້ຮັບການສະຫນັບສະຫນູນຢູ່ໃນເວທີ ELF ເທົ່ານັ້ນ.
--force-dynamic
ບັງຄັບໃຫ້ໄຟລ໌ຜົນຜະລິດມີພາກສ່ວນໄດນາມິກ. ທາງເລືອກນີ້ແມ່ນສະເພາະກັບ VxWorks
ເປົ້າ ໝາຍ.
-r
-- ຍ້າຍອອກໄດ້
ສ້າງຜົນຜະລິດທີ່ສາມາດຍ້າຍຖິ່ນຖານໄດ້ --- ie, ສ້າງໄຟລ໌ຜົນຜະລິດທີ່ສາມາດເຮັດຫນ້າທີ່ເປັນ
ປ້ອນໃສ່ ld. ອັນນີ້ມັກເອີ້ນວ່າ partial ເຊື່ອມຕໍ່. ໃນຖານະເປັນຜົນກະທົບຂ້າງຄຽງ, ໃນສະພາບແວດລ້ອມ
ທີ່ຮອງຮັບຕົວເລກ magic Unix ມາດຕະຖານ, ທາງເລືອກນີ້ຍັງກໍານົດໄຟລ໌ຜົນຜະລິດ
ເລກ magic ກັບ "OMAGIC". ຖ້າຕົວເລືອກນີ້ບໍ່ໄດ້ຖືກລະບຸ, ໄຟລ໌ຢ່າງແທ້ຈິງແມ່ນ
ຜະລິດ. ເມື່ອເຊື່ອມຕໍ່ໂຄງການ C ++, ທາງເລືອກນີ້ ຈະ ບໍ່ ແກ້ໄຂການອ້າງອີງເຖິງ
ຜູ້ກໍ່ສ້າງ; ເພື່ອເຮັດສິ່ງນີ້, ໃຊ້ - ອ.
ເມື່ອໄຟລ໌ປ້ອນຂໍ້ມູນບໍ່ມີຮູບແບບດຽວກັນກັບໄຟລ໌ຜົນຜະລິດ, ການເຊື່ອມໂຍງບາງສ່ວນ
ຮອງຮັບພຽງແຕ່ຖ້າໄຟລ໌ປ້ອນຂໍ້ມູນນັ້ນບໍ່ມີການຍົກຍ້າຍໃດໆ. ແຕກຕ່າງກັນ
ຮູບແບບຜົນຜະລິດສາມາດມີຂໍ້ຈໍາກັດຕື່ມອີກ; ຕົວຢ່າງບາງຮູບແບບ "a.out" ທີ່ອີງໃສ່
ບໍ່ຮອງຮັບການເຊື່ອມໂຍງບາງສ່ວນກັບໄຟລ໌ປ້ອນຂໍ້ມູນໃນຮູບແບບອື່ນເລີຍ.
ທາງເລືອກນີ້ເຮັດເຊັ່ນດຽວກັນກັບ -i.
-R ຊື່ເອກະສານ
--just-ສັນຍາລັກ=ຊື່ເອກະສານ
ອ່ານຊື່ສັນຍາລັກແລະທີ່ຢູ່ຂອງເຂົາເຈົ້າຈາກ ຊື່ເອກະສານ, ແຕ່ຢ່າຍ້າຍມັນຫຼືປະກອບມີ
ມັນຢູ່ໃນຜົນຜະລິດ. ນີ້ອະນຸຍາດໃຫ້ໄຟລ໌ຜົນຜະລິດຂອງທ່ານອ້າງອີງສັນຍາລັກຢ່າງແທ້ຈິງ
ສະຖານທີ່ຂອງຫນ່ວຍຄວາມຈໍາທີ່ກໍານົດໄວ້ໃນໂຄງການອື່ນໆ. ທ່ານອາດຈະໃຊ້ທາງເລືອກນີ້ຫຼາຍກ່ວາ
ຄັ້ງຫນຶ່ງ.
ສໍາລັບຄວາມເຂົ້າກັນໄດ້ກັບຕົວເຊື່ອມຕໍ່ ELF ອື່ນໆ, ຖ້າ -R ທາງເລືອກແມ່ນປະຕິບັດຕາມໂດຍໄດເລກະທໍລີ
ຊື່, ແທນທີ່ຈະເປັນຊື່ໄຟລ໌, ມັນຖືກປະຕິບັດເປັນ -rpath ທາງເລືອກ.
-s
--strip-ທັງໝົດ
ຍົກເລີກຂໍ້ມູນສັນຍາລັກທັງໝົດຈາກໄຟລ໌ຜົນຜະລິດ.
-S
--strip-debug
ປ່ອຍຂໍ້ມູນສັນຍາລັກດີບັກ (ແຕ່ບໍ່ແມ່ນສັນຍາລັກທັງໝົດ) ຈາກໄຟລ໌ຜົນຜະລິດ.
-t
-- ຕິດຕາມ
ພິມຊື່ຂອງໄຟລ໌ປ້ອນຂໍ້ມູນເປັນ ld ປະມວນຜົນພວກມັນ.
-T ໄຟລ໌ສະຄຣິບ
--script=ໄຟລ໌ສະຄຣິບ
ການນໍາໃຊ້ ໄຟລ໌ສະຄຣິບ ເປັນຕົວເຊື່ອມຕໍ່. ສະຄຣິບນີ້ປ່ຽນແທນ ldscript linker ເລີ່ມຕົ້ນຂອງ
(ແທນທີ່ຈະຕື່ມໃສ່ມັນ), ດັ່ງນັ້ນ ໄຟລ໌ຄໍາສັ່ງ ຕ້ອງລະບຸທຸກຢ່າງທີ່ຈໍາເປັນເພື່ອ
ອະທິບາຍໄຟລ໌ຜົນຜະລິດ. ຖ້າ ໄຟລ໌ສະຄຣິບ ບໍ່ມີຢູ່ໃນໄດເລກະທໍລີປະຈຸບັນ,
"ld" ຊອກຫາມັນຢູ່ໃນໄດເລກະທໍລີທີ່ລະບຸໄວ້ກ່ອນຫນ້າໃດໆ -L ທາງເລືອກ. ຫຼາຍ
-T ທາງເລືອກສະສົມ.
-dT ໄຟລ໌ສະຄຣິບ
--default-script=ໄຟລ໌ສະຄຣິບ
ການນໍາໃຊ້ ໄຟລ໌ສະຄຣິບ ເປັນຕົວເຊື່ອມຕໍ່ເລີ່ມຕົ້ນ.
ທາງເລືອກນີ້ແມ່ນຄ້າຍຄືກັນກັບ - ບົດຂຽນ ທາງເລືອກຍົກເວັ້ນການປຸງແຕ່ງຂອງ script ແມ່ນ
ຊັກຊ້າຈົນກ່ວາຫຼັງຈາກສ່ວນທີ່ເຫຼືອຂອງເສັ້ນຄໍາສັ່ງໄດ້ຖືກດໍາເນີນການ. ນີ້ອະນຸຍາດໃຫ້
ທາງເລືອກທີ່ວາງໄວ້ຫຼັງຈາກ --default-script ທາງເລືອກໃນເສັ້ນຄໍາສັ່ງທີ່ຈະສົ່ງຜົນກະທົບຕໍ່
ພຶດຕິກໍາຂອງ linker script, ເຊິ່ງສາມາດມີຄວາມສໍາຄັນໃນເວລາທີ່ເສັ້ນຄໍາສັ່ງ linker
ບໍ່ສາມາດຄວບຄຸມໄດ້ໂດຍກົງໂດຍຜູ້ໃຊ້. (ເຊັ່ນ: ເສັ້ນຄໍາສັ່ງແມ່ນ
ກໍ່ສ້າງໂດຍເຄື່ອງມືອື່ນ, ເຊັ່ນ: gcc).
-u ສັນຍາລັກ
--undefined=ສັນຍາລັກ
ຜົນບັງຄັບໃຊ້ ສັນຍາລັກ ຈະຖືກໃສ່ໃນໄຟລ໌ຜົນຜະລິດເປັນສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດ. ການເຮັດນີ້ອາດຈະ,
ຕົວຢ່າງ, ກະຕຸ້ນການເຊື່ອມຕໍ່ຂອງໂມດູນເພີ່ມເຕີມຈາກຫ້ອງສະຫມຸດມາດຕະຖານ. -u ອາດຈະເປັນ
ຊ້ຳກັບ arguments ທາງເລືອກທີ່ແຕກຕ່າງກັນເພື່ອໃສ່ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດເພີ່ມເຕີມ. ນີ້
ທາງເລືອກແມ່ນທຽບເທົ່າກັບຄໍາສັ່ງ "EXTERN" linker script.
ຖ້າຕົວເລືອກນີ້ຖືກໃຊ້ເພື່ອບັງຄັບໃຫ້ໂມດູນເພີ່ມເຕີມຖືກດຶງເຂົ້າໄປໃນການເຊື່ອມຕໍ່,
ແລະຖ້າຫາກວ່າມັນເປັນຄວາມຜິດພາດສໍາລັບສັນຍາລັກທີ່ຍັງບໍ່ໄດ້ກໍານົດ, ຫຼັງຈາກນັ້ນທາງເລືອກ
--require-defined ຄວນໃຊ້ແທນ.
--require-defined=ສັນຍາລັກ
ຕ້ອງການນັ້ນ ສັນຍາລັກ ຖືກກໍານົດໄວ້ໃນໄຟລ໌ຜົນຜະລິດ. ທາງເລືອກນີ້ແມ່ນຄືກັນກັບທາງເລືອກ
-- ບໍ່ໄດ້ກໍານົດ ຍົກເວັ້ນວ່າຖ້າ ສັນຍາລັກ ບໍ່ໄດ້ຖືກກໍານົດໄວ້ໃນໄຟລ໌ຜົນຜະລິດຫຼັງຈາກນັ້ນຕົວເຊື່ອມຕໍ່
ຈະອອກຂໍ້ຜິດພາດແລະອອກ. ຜົນກະທົບດຽວກັນສາມາດບັນລຸໄດ້ໃນ script linker ໂດຍ
ໃຊ້ "EXTERN", "ASSERT" ແລະ "DEFINED" ຮ່ວມກັນ. ທາງເລືອກນີ້ສາມາດຖືກນໍາໃຊ້ຫຼາຍ
ເວລາທີ່ຕ້ອງການສັນຍາລັກເພີ່ມເຕີມ.
- ອ ສໍາລັບສິ່ງອື່ນນອກຈາກໂຄງການ C ++, ທາງເລືອກນີ້ແມ່ນທຽບເທົ່າກັບ -r: ມັນສ້າງ
ຜົນຜະລິດທີ່ສາມາດຍ້າຍໄດ້ --- ie, ໄຟລ໌ຜົນຜະລິດທີ່ສາມາດເຮັດຫນ້າທີ່ເປັນ input ກັບ ldທີ່ຢູ່ ເມື່ອໃດ
ການເຊື່ອມຕໍ່ໂຄງການ C++, - ອ ບໍ່ ແກ້ໄຂການອ້າງອີງເຖິງຜູ້ກໍ່ສ້າງ, ບໍ່ເຫມືອນກັບ -r. ມັນເຮັດ
ບໍ່ເຮັດວຽກເພື່ອນໍາໃຊ້ - ອ ຢູ່ໃນໄຟລ໌ທີ່ຕົນເອງເຊື່ອມຕໍ່ກັບ - ອ; ເມື່ອ
ຕາຕະລາງ constructor ໄດ້ຖືກສ້າງຂຶ້ນ, ມັນບໍ່ສາມາດເພີ່ມໃສ່ໄດ້. ໃຊ້ - ອ ພຽງແຕ່ສໍາລັບການສຸດທ້າຍ
ການເຊື່ອມຕໍ່ບາງສ່ວນ, ແລະ -r ສໍາລັບຄົນອື່ນ.
--orphan-handling=MODE
ຄວບຄຸມວິທີການຈັດການກັບພາກສ່ວນເດັກກໍາພ້າ. ພາກສ່ວນເດັກກໍາພ້າແມ່ນຫນຶ່ງບໍ່ໄດ້ໂດຍສະເພາະ
ກ່າວເຖິງໃນຕົວເຊື່ອມຕໍ່.
MODE ສາມາດມີຄ່າໃດໜຶ່ງຕໍ່ໄປນີ້:
"ສະຖານທີ່"
ພາກສ່ວນເດັກກໍາພ້າໄດ້ຖືກຈັດໃສ່ໃນພາກສ່ວນຜົນຜະລິດທີ່ເຫມາະສົມປະຕິບັດຕາມຍຸດທະສາດ
ອະທິບາຍໃນ ເດັກ ກຳ ພ້າ Sections. ທາງເລືອກ --ເປັນເອກະລັກ ຍັງມີຜົນກະທົບແນວໃດພາກສ່ວນຕ່າງໆ
ທີ່ຕັ້ງໄວ້.
"ຖິ້ມ"
ພາກສ່ວນເດັກກໍາພ້າທັງຫມົດແມ່ນໄດ້ຖືກຍົກເລີກ, ໂດຍການວາງໄວ້ໃນ /ຍົກເລີກ/ ສ່ວນ.
"ເຕືອນ"
ຕົວເຊື່ອມຕໍ່ຈະວາງສ່ວນເດັກກໍາພ້າເປັນ "ສະຖານທີ່" ແລະຍັງອອກຄໍາເຕືອນ.
"ຄວາມຜິດພາດ"
ຕົວເຊື່ອມຕໍ່ຈະອອກດ້ວຍຄວາມຜິດພາດຖ້າພົບເຫັນພາກສ່ວນເດັກກໍາພ້າ.
ຄ່າເລີ່ມຕົ້ນຖ້າ --ກຳພ້າ-ການຈັດການ ບໍ່ໄດ້ຖືກມອບໃຫ້ແມ່ນ "ສະຖານທີ່".
--ເປັນເອກະລັກ[=SECTION]
ສ້າງພາກສ່ວນຜົນຜະລິດແຍກຕ່າງຫາກສໍາລັບທຸກພາກສ່ວນການປ້ອນຂໍ້ມູນທີ່ກົງກັນ SECTION, ຫຼືຖ້າວ່າ
ຕົວແທນທາງເລືອກ SECTION argument ຫາຍໄປ, ສໍາລັບທຸກພາກສ່ວນປ້ອນຂໍ້ມູນເດັກກໍາພ້າ. ອັນ
ພາກສ່ວນເດັກກໍາພ້າແມ່ນສ່ວນຫນຶ່ງທີ່ບໍ່ໄດ້ກ່າວເຖິງໂດຍສະເພາະໃນຕົວເຊື່ອມຕໍ່. ເຈົ້າອາດຈະໃຊ້ອັນນີ້
ທາງເລືອກຫຼາຍຄັ້ງໃນແຖວຄໍາສັ່ງ; ມັນປ້ອງກັນການລວມເຂົ້າກັນປົກກະຕິ
ພາກສ່ວນທີ່ມີຊື່ດຽວກັນ, overriding ການມອບຫມາຍພາກສ່ວນຜົນຜະລິດໃນສະຄຣິບ linker.
-v
- ການປ່ຽນແປງ
-V ສະແດງໝາຍເລກເວີຊັນສຳລັບ ld. ໄດ້ -V ທາງເລືອກຍັງລາຍການ emulations ສະຫນັບສະຫນູນ.
-x
--ຍົກເລີກທັງໝົດ
ລຶບສັນຍາລັກທ້ອງຖິ່ນທັງໝົດ.
-X
--discard-ທ້ອງຖິ່ນ
ລຶບສັນຍາລັກທ້ອງຖິ່ນຊົ່ວຄາວທັງໝົດ. (ສັນຍາລັກເຫຼົ່ານີ້ເລີ່ມຕົ້ນດ້ວຍລະບົບສະເພາະທ້ອງຖິ່ນ
ຄໍານໍາຫນ້າປ້າຍຊື່, ໂດຍປົກກະຕິ .L ສໍາລັບລະບົບ ELF ຫຼື L ສໍາລັບລະບົບ a.out ແບບດັ້ງເດີມ.)
-y ສັນຍາລັກ
--trace-symbol=ສັນຍາລັກ
ພິມຊື່ຂອງແຕ່ລະໄຟລ໌ທີ່ເຊື່ອມຕໍ່ນັ້ນ ສັນຍາລັກ ປະກົດ. ທາງເລືອກນີ້ອາດຈະຖືກມອບໃຫ້
ຈໍານວນຄັ້ງໃດນຶ່ງ. ໃນຫຼາຍລະບົບ, ມັນ ຈຳ ເປັນຕ້ອງມີຂີດກ້ອງ.
ທາງເລືອກນີ້ແມ່ນເປັນປະໂຫຍດໃນເວລາທີ່ທ່ານມີສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດຢູ່ໃນການເຊື່ອມຕໍ່ຂອງທ່ານແຕ່ບໍ່ຮູ້
ບ່ອນທີ່ການອ້າງອິງແມ່ນມາຈາກ.
-Y ເສັ້ນທາງ
ຕື່ມ ເສັ້ນທາງ ໄປຫາເສັ້ນທາງຄົ້ນຫາຫ້ອງສະໝຸດເລີ່ມຕົ້ນ. ຕົວເລືອກນີ້ມີຢູ່ສໍາລັບ Solaris
ຄວາມເຂົ້າກັນໄດ້.
-z ຄໍາ
ຄໍາສໍາຄັນທີ່ຖືກຮັບຮູ້ແມ່ນ:
combreloc
ສົມທົບການຍົກຍ້າຍຫຼາຍພາກສ່ວນ ແລະຈັດຮຽງພວກມັນເພື່ອເຮັດໃຫ້ການຊອກຫາສັນຍາລັກແບບເຄື່ອນໄຫວ
ການເກັບຂໍ້ມູນທີ່ເປັນໄປໄດ້.
defs
ບໍ່ອະນຸຍາດສັນຍາລັກທີ່ບໍ່ໄດ້ກຳນົດໄວ້ໃນໄຟລ໌ວັດຖຸ. ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດໄວ້ໃນການແບ່ງປັນ
ຫ້ອງສະຫມຸດຍັງໄດ້ຮັບອະນຸຍາດ.
execstack
ໝາຍວັດຖຸວ່າຕ້ອງການ stack ທີ່ສາມາດປະຕິບັດໄດ້.
ທົ່ວໂລກ
ຕົວເລືອກນີ້ມີຄວາມຫມາຍພຽງແຕ່ເມື່ອສ້າງວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ. ມັນເຮັດໃຫ້
ສັນຍາລັກທີ່ກໍານົດໂດຍວັດຖຸແບ່ງປັນນີ້ມີສໍາລັບການແກ້ໄຂສັນຍາລັກຂອງ
ຕໍ່ມາໄດ້ໂຫຼດຫ້ອງສະໝຸດ.
ທຳອິດ
ຕົວເລືອກນີ້ມີຄວາມຫມາຍພຽງແຕ່ເມື່ອສ້າງວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ. ມັນຫມາຍວັດຖຸ
ດັ່ງນັ້ນການເລີ່ມຕົ້ນ runtime ຂອງມັນຈະເກີດຂຶ້ນກ່ອນທີ່ຈະເລີ່ມຕົ້ນ runtime ຂອງ
ວັດຖຸອື່ນໆທີ່ນໍາເອົາເຂົ້າໃນຂະບວນການໃນເວລາດຽວກັນ. ເຊັ່ນດຽວກັນ
runtime finalization ຂອງວັດຖຸຈະເກີດຂຶ້ນຫຼັງຈາກ runtime finalization ຂອງ
ວັດຖຸອື່ນໆ.
ແຊກແຊງ
ຫມາຍວັດຖຸທີ່ຕາຕະລາງສັນຍາລັກຂອງມັນ interposes ກ່ອນສັນຍາລັກທັງຫມົດແຕ່ໄດ້
ການປະຕິບັດຂັ້ນຕົ້ນ.
lazy
ເມື່ອສ້າງຫ້ອງສະໝຸດທີ່ສາມາດປະຕິບັດໄດ້ ຫຼືແບ່ງປັນ, ໃຫ້ໝາຍມັນເພື່ອບອກການເຄື່ອນທີ່
linker ເພື່ອເລື່ອນການແກ້ໄຂບັນຫາການໂທໄປຫາຈຸດເວລາທີ່ຟັງຊັນຖືກເອີ້ນ
(lazy binding), ແທນທີ່ຈະໃນເວລາໂຫຼດ. Lazy binding ແມ່ນຄ່າເລີ່ມຕົ້ນ.
loadfltr
ໝາຍວັດຖຸທີ່ຕົວກອງຂອງມັນຈະຖືກປະມວນຜົນທັນທີໃນເວລາແລ່ນ.
muldefs
ອະນຸຍາດຫຼາຍຄໍານິຍາມ.
nocombreloc
ປິດໃຊ້ງານການລວມເອົາພາກສ່ວນການຍົກຍ້າຍຫຼາຍອັນ.
nocopyreloc
ປິດໃຊ້ງານຕົວແປ .dynbss ທີ່ສ້າງຂຶ້ນໃນຕົວເຊື່ອມຕໍ່ທີ່ໃຊ້ແທນຕົວແປທີ່ກຳນົດໄວ້ໃນ
ຫ້ອງສະໝຸດທີ່ແບ່ງປັນ. ອາດຈະສົ່ງຜົນໃຫ້ມີການຍ້າຍຂໍ້ຄວາມແບບເຄື່ອນໄຫວ.
nodefaultlib
ໝາຍວັດຖຸທີ່ການຊອກຫາຄວາມຂຶ້ນກັບຂອງວັດຖຸນີ້ຈະບໍ່ສົນໃຈໃດໆ
ເສັ້ນທາງຄົ້ນຫາຫ້ອງສະໝຸດເລີ່ມຕົ້ນ.
nodelete
ໝາຍວ່າວັດຖຸບໍ່ຄວນຖືກຖອດອອກໃນເວລາແລ່ນ.
ໂນໂລເປນ
ໝາຍວັດຖຸບໍ່ມີໃຫ້ "dlopen".
nodump
ໝາຍວ່າວັດຖຸບໍ່ສາມາດຖືກຖິ້ມໂດຍ "dldump".
noexecStack
ໝາຍວັດຖຸວ່າບໍ່ຕ້ອງການ stack ທີ່ສາມາດປະຕິບັດໄດ້.
ຂໍ້ຄວາມ
ປະຕິບັດ DT_TEXTREL ໃນວັດຖຸທີ່ແບ່ງປັນເປັນຄວາມຜິດພາດ.
notext
ຢ່າປະຕິບັດ DT_TEXTREL ໃນວັດຖຸທີ່ໃຊ້ຮ່ວມກັນເປັນຄວາມຜິດພາດ.
textoff
ຢ່າປະຕິບັດ DT_TEXTREL ໃນວັດຖຸທີ່ໃຊ້ຮ່ວມກັນເປັນຄວາມຜິດພາດ.
ໂນເຣໂຣ
ຢ່າສ້າງສ່ວນຫົວຂອງ ELF "PT_GNU_RELRO" ໃນວັດຖຸ.
ໃນປັດຈຸບັນ ເມື່ອສ້າງຫ້ອງສະໝຸດທີ່ສາມາດປະຕິບັດໄດ້ ຫຼືແບ່ງປັນ, ໃຫ້ໝາຍມັນເພື່ອບອກການເຄື່ອນທີ່
linker ເພື່ອແກ້ໄຂສັນຍາລັກທັງຫມົດໃນເວລາທີ່ໂຄງການໄດ້ຖືກເລີ່ມຕົ້ນ, ຫຼືໃນເວລາທີ່ແບ່ງປັນ
ຫ້ອງສະຫມຸດແມ່ນເຊື່ອມຕໍ່ກັບການນໍາໃຊ້ dlopen, ແທນທີ່ຈະເປັນການເລື່ອນການແກ້ໄຂບັນຫາການໂທ
ຮອດຈຸດເວລາທີ່ເອີ້ນໃຊ້ຟັງຊັນທຳອິດ.
ຕົ້ນກໍາເນີດ
ໝາຍວັດຖຸອາດມີ $ORIGIN.
ເຣໂຣ
ສ້າງສ່ວນຫົວຂອງ ELF "PT_GNU_RELRO" ໃນວັດຖຸ.
max-page-size=ມູນຄ່າ
ກໍານົດຂະຫນາດຫນ້າຈໍາລອງສູງສຸດເປັນ ມູນຄ່າ.
common-page-size=ມູນຄ່າ
ກໍານົດຂະຫນາດຫນ້າທົ່ວໄປຂອງ emulation ເປັນ ມູນຄ່າ.
stack-size=ມູນຄ່າ
ລະບຸຂະໜາດ stack ສໍາລັບຢູ່ໃນພາກສ່ວນ ELF "PT_GNU_STACK". ການກໍານົດສູນຈະ
ລົບລ້າງການສ້າງພາກສ່ວນທີ່ບໍ່ມີຂະໜາດມາດຕະຖານ "PT_GNU_STACK".
bndplt
ສະເຫມີສ້າງຄໍານໍາຫນ້າ BND ໃນລາຍການ PLT. ຮອງຮັບ Linux/x86_64.
noextern-protected-data
ຢ່າປະຕິບັດສັນຍາລັກຂໍ້ມູນທີ່ຖືກປ້ອງກັນເປັນພາຍນອກໃນເວລາທີ່ສ້າງຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ. ນີ້
ທາງເລືອກ overrides linker backend ຄ່າເລີ່ມຕົ້ນ. ມັນສາມາດຖືກນໍາໃຊ້ເພື່ອແກ້ໄຂບັນຫາທີ່ບໍ່ຖືກຕ້ອງ
ການຍົກຍ້າຍຕໍ່ກັບສັນຍາລັກຂໍ້ມູນທີ່ຖືກປ້ອງກັນທີ່ສ້າງຂຶ້ນໂດຍ compiler. ອັບເດດແລ້ວ
ສັນຍາລັກຂໍ້ມູນທີ່ໄດ້ຮັບການປົກປ້ອງໂດຍໂມດູນອື່ນແມ່ນບໍ່ສາມາດເບິ່ງເຫັນຜົນໄດ້ຮັບການແບ່ງປັນ
ຫໍສະໝຸດ. ຮອງຮັບ i386 ແລະ x86-64.
call-nop=prefix-addr
call-nop=prefix-nop
call-nop=suffix-nop
call-nop=ຄຳນຳໜ້າ-byte
call-nop=suffix-byte
ລະບຸ 1-byte padding "NOP" ເມື່ອປ່ຽນການໂທທາງອ້ອມໄປສູ່ທ້ອງຖິ່ນ
ຫນ້າທີ່ກໍານົດ, foo, ຜ່ານຊ່ອງ GOT ຂອງມັນ. call-nop=prefix-addr ສ້າງ "0x67
ໂທຫາ foo". call-nop=prefix-nop ສ້າງ "0x90 call foo". call-nop=suffix-nop
ສ້າງ "ໂທຫາ foo 0x90". call-nop=ຄຳນຳໜ້າ-byte ສ້າງ "byte ໂທ ຟູ".
call-nop=suffix-byte ສ້າງ "ໂທຫາ foo byte". ຮອງຮັບ i386 ແລະ x86_64.
ຄໍາສໍາຄັນອື່ນໆແມ່ນຖືກລະເລີຍສໍາລັບຄວາມເຂົ້າກັນໄດ້ຂອງ Solaris.
-( ເອກະສານ -)
--ກຸ່ມເລີ່ມຕົ້ນ ເອກະສານ --ກຸ່ມສຸດທ້າຍ
ໄດ້ ເອກະສານ ຄວນເປັນບັນຊີລາຍຊື່ຂອງໄຟລ໌ທີ່ເກັບໄວ້. ພວກມັນອາດຈະເປັນໄຟລ໌ທີ່ຊັດເຈນ
ຊື່, ຫຼື -l ຕົວເລືອກ
ການຈັດເກັບທີ່ລະບຸໄວ້ຈະຖືກຄົ້ນຫາຊ້ຳໆຈົນກວ່າບໍ່ມີການອ້າງອີງໃໝ່ທີ່ບໍ່ໄດ້ກຳນົດໄວ້
ສ້າງ. ໂດຍປົກກະຕິ, ແຟ້ມຈັດເກັບຖືກຄົ້ນຫາພຽງແຕ່ຄັ້ງດຽວໃນຄໍາສັ່ງທີ່ມັນຖືກລະບຸໄວ້
ຢູ່ໃນເສັ້ນຄໍາສັ່ງ. ຖ້າສັນຍາລັກຢູ່ໃນບ່ອນເກັບມ້ຽນແມ່ນຈໍາເປັນເພື່ອແກ້ໄຂບັນຫາທີ່ບໍ່ໄດ້ກໍານົດ
ສັນຍາລັກທີ່ອ້າງເຖິງໂດຍວັດຖຸໃນການເກັບຮັກສາທີ່ປາກົດຂຶ້ນໃນຕໍ່ມາໃນບັນຊີຄໍາສັ່ງ,
ຕົວເຊື່ອມຕໍ່ຈະບໍ່ສາມາດແກ້ໄຂການອ້າງອີງນັ້ນໄດ້. ໂດຍການຈັດກຸ່ມເກັບມ້ຽນ,
ພວກມັນທັງໝົດຈະຖືກຄົ້ນຫາຊ້ຳໆຈົນກວ່າການອ້າງອີງທີ່ເປັນໄປໄດ້ທັງໝົດຈະຖືກແກ້ໄຂ.
ການນໍາໃຊ້ທາງເລືອກນີ້ມີຄ່າໃຊ້ຈ່າຍປະສິດທິພາບທີ່ສໍາຄັນ. ມັນດີທີ່ສຸດທີ່ຈະໃຊ້ມັນພຽງແຕ່ເມື່ອ
ມີການອ້າງອີງວົງວຽນທີ່ບໍ່ສາມາດຫຼີກລ່ຽງໄດ້ລະຫວ່າງສອງຮວບຮວມຫຼືຫຼາຍກວ່ານັ້ນ.
--accept-unknown-input-arch
--no-accept-unknown-input-arch
ບອກຕົວເຊື່ອມຕໍ່ໃຫ້ຍອມຮັບໄຟລ໌ປ້ອນຂໍ້ມູນທີ່ສະຖາປັດຕະຍະກຳບໍ່ສາມາດຮັບຮູ້ໄດ້. ໄດ້
ສົມມຸດຕິຖານແມ່ນວ່າຜູ້ໃຊ້ຮູ້ວ່າພວກເຂົາກໍາລັງເຮັດຫຍັງແລະເຈດຕະນາຕ້ອງການການເຊື່ອມຕໍ່
ໃນໄຟລ໌ປ້ອນຂໍ້ມູນທີ່ບໍ່ຮູ້ຈັກເຫຼົ່ານີ້. ນີ້ແມ່ນພຶດຕິກໍາເລີ່ມຕົ້ນຂອງຕົວເຊື່ອມຕໍ່, ກ່ອນຫນ້ານີ້
ລຸ້ນ 2.14. ພຶດຕິກໍາເລີ່ມຕົ້ນຈາກການປ່ອຍ 2.14 ເປັນຕົ້ນໄປແມ່ນການປະຕິເສດການປ້ອນຂໍ້ມູນດັ່ງກ່າວ
ໄຟລ໌, ແລະອື່ນໆ --accept-unknown-input-arch ທາງເລືອກໄດ້ຖືກເພີ່ມເພື່ອຟື້ນຟູຂອງເກົ່າ
ພຶດຕິ ກຳ.
-- ຕາມຄວາມຕ້ອງການ
-- ບໍ່ຕ້ອງການ
ຕົວເລືອກນີ້ມີຜົນກະທົບກັບແທັກ ELF DT_NEEDED ສໍາລັບຫ້ອງສະຫມຸດແບບໄດນາມິກທີ່ໄດ້ກ່າວມາໃນຄໍາສັ່ງ
ເສັ້ນຫຼັງຈາກ -- ຕາມຄວາມຕ້ອງການ ທາງເລືອກ. ໂດຍປົກກະຕິຕົວເຊື່ອມຕໍ່ຈະເພີ່ມແທັກ DT_NEEDED ສໍາລັບ
ແຕ່ລະຫ້ອງສະຫມຸດແບບເຄື່ອນໄຫວທີ່ກ່າວເຖິງຢູ່ໃນເສັ້ນຄໍາສັ່ງ, ບໍ່ວ່າຈະເປັນຫ້ອງສະຫມຸດ
ຕົວຈິງແລ້ວແມ່ນຈໍາເປັນຫຼືບໍ່. -- ຕາມຄວາມຕ້ອງການ ເຮັດໃຫ້ແທັກ DT_NEEDED ພຽງແຕ່ຖືກປ່ອຍອອກມາ
ຫ້ອງສະຫມຸດທີ່ at ທີ່ ຈຸດ in ໄດ້ ການເຊື່ອມຕໍ່ ພໍໃຈກັບສັນຍາລັກທີ່ບໍ່ໄດ້ກຳນົດໄວ້ທີ່ບໍ່ອ່ອນແອ
ການອ້າງອີງຈາກໄຟລ໌ວັດຖຸປົກກະຕິຫຼື, ຖ້າຫ້ອງສະຫມຸດບໍ່ພົບຢູ່ໃນ DT_NEEDED
ບັນຊີລາຍຊື່ຂອງຫ້ອງສະຫມຸດທີ່ຈໍາເປັນອື່ນໆ, ເປັນສັນຍາລັກທີ່ບໍ່ອ່ອນແອອ້າງອີງຈາກບ່ອນອື່ນ
ຕ້ອງການຫ້ອງສະຫມຸດແບບເຄື່ອນໄຫວ. ໄຟລ໌ວັດຖຸຫຼືຫ້ອງສະຫມຸດທີ່ປາກົດຢູ່ໃນເສັ້ນຄໍາສັ່ງ ຫຼັງຈາກ
ຫໍສະຫມຸດຢູ່ໃນຄໍາຖາມບໍ່ມີຜົນກະທົບວ່າຫ້ອງສະຫມຸດໄດ້ຖືກເຫັນວ່າມີຄວາມຈໍາເປັນ. ນີ້ແມ່ນ
ຄ້າຍຄືກັນກັບລະບຽບການສໍາລັບການສະກັດໄຟລ໌ວັດຖຸຈາກການເກັບ. -- ບໍ່ຕ້ອງການ
ຟື້ນຟູພຶດຕິກຳເລີ່ມຕົ້ນ.
-- ເພີ່ມຄວາມຈໍາເປັນ
--no-add-need
ທັງສອງທາງເລືອກນີ້ໄດ້ຖືກປະຕິເສດເນື່ອງຈາກຄວາມຄ້າຍຄືກັນຂອງຊື່ຂອງເຂົາເຈົ້າກັບ
-- ຕາມຄວາມຕ້ອງການ ແລະ -- ບໍ່ຕ້ອງການ ທາງເລືອກ. ພວກເຂົາເຈົ້າໄດ້ຖືກທົດແທນໂດຍ
--copy-dt-needed-entries ແລະ --no-copy-dt-needed-entries.
- ຢືນຢັນ ຄໍາ
ຕົວເລືອກນີ້ຖືກລະເລີຍສໍາລັບຄວາມເຂົ້າກັນໄດ້ຂອງ SunOS.
-Bdynamic
-ດີ
-call_shared
ເຊື່ອມຕໍ່ກັບຫ້ອງສະຫມຸດແບບເຄື່ອນໄຫວ. ນີ້ແມ່ນຄວາມຫມາຍພຽງແຕ່ຢູ່ໃນເວທີທີ່ແບ່ງປັນ
ຫ້ອງສະຫມຸດໄດ້ຮັບການສະຫນັບສະຫນູນ. ຕົວເລືອກນີ້ແມ່ນປົກກະຕິເປັນຄ່າເລີ່ມຕົ້ນໃນເວທີດັ່ງກ່າວ. ໄດ້
variants ທີ່ແຕກຕ່າງກັນຂອງທາງເລືອກນີ້ແມ່ນສໍາລັບການເຂົ້າກັນໄດ້ກັບລະບົບຕ່າງໆ. ເຈົ້າອາດຈະ
ໃຊ້ຕົວເລືອກນີ້ຫຼາຍຄັ້ງໃນແຖວຄໍາສັ່ງ: ມັນມີຜົນກະທົບຕໍ່ການຊອກຫາຫ້ອງສະຫມຸດ
-l ທາງເລືອກທີ່ປະຕິບັດຕາມມັນ.
- ກຸ່ມ
ຕັ້ງທຸງ "DF_1_GROUP" ໃນລາຍການ "DT_FLAGS_1" ໃນພາກສ່ວນໄດນາມິກ. ນີ້
ເຮັດໃຫ້ຕົວເຊື່ອມຕໍ່ runtime ຈັດການການຊອກຫາຢູ່ໃນວັດຖຸນີ້ແລະການຂື້ນກັບມັນ
ປະຕິບັດພຽງແຕ່ພາຍໃນກຸ່ມ. --unresolved-symbols=ລາຍງານ-ທັງໝົດ ຫມາຍເຖິງ. ນີ້
ທາງເລືອກແມ່ນມີຄວາມຫມາຍພຽງແຕ່ໃນເວທີ ELF ທີ່ສະຫນັບສະຫນູນຫ້ອງສະຫມຸດຮ່ວມກັນ.
-Bstatic
-dn
-non_shared
-static
ຫ້າມເຊື່ອມຕໍ່ຫາຫ້ອງສະໝຸດທີ່ແບ່ງປັນ. ນີ້ແມ່ນຄວາມຫມາຍພຽງແຕ່ໃນເວທີທີ່
ຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນໄດ້ຮັບການສະຫນັບສະຫນູນ. variants ທີ່ແຕກຕ່າງກັນຂອງທາງເລືອກນີ້ແມ່ນສໍາລັບ
ຄວາມເຂົ້າກັນໄດ້ກັບລະບົບຕ່າງໆ. ທ່ານອາດຈະນໍາໃຊ້ທາງເລືອກນີ້ຫຼາຍຄັ້ງໃນ
ເສັ້ນຄໍາສັ່ງ: ມັນມີຜົນກະທົບຕໍ່ການຊອກຫາຫ້ອງສະຫມຸດ -l ທາງເລືອກທີ່ປະຕິບັດຕາມມັນ. ນີ້
ທາງເລືອກຍັງຫມາຍເຖິງ --unresolved-symbols=ລາຍງານ-ທັງໝົດ. ທາງເລືອກນີ້ສາມາດຖືກນໍາໃຊ້ກັບ
- ແບ່ງປັນ. ການເຮັດດັ່ງນັ້ນຫມາຍຄວາມວ່າຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນແມ່ນຖືກສ້າງຂຶ້ນແຕ່ວ່າທັງຫມົດ
ການອ້າງອິງພາຍນອກຂອງຫ້ອງສະໝຸດຕ້ອງໄດ້ຮັບການແກ້ໄຂໂດຍການດຶງລາຍການຈາກແບບຄົງທີ່
ຫ້ອງສະ ໝຸດ.
- ສັນຍາລັກ
ເມື່ອສ້າງຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ, ຜູກມັດການອ້າງອິງກັບສັນຍາລັກທົ່ວໂລກກັບຄໍານິຍາມ
ພາຍໃນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ, ຖ້າມີ. ໂດຍປົກກະຕິ, ມັນເປັນໄປໄດ້ສໍາລັບໂຄງການທີ່ເຊື່ອມຕໍ່
ຕໍ່ກັບຫ້ອງສະໝຸດທີ່ແບ່ງປັນເພື່ອລົບລ້າງຄຳນິຍາມພາຍໃນຫ້ອງສະໝຸດທີ່ແບ່ງປັນ. ນີ້
ທາງເລືອກຍັງສາມາດຖືກນໍາໃຊ້ກັບ --ການສົ່ງອອກ-ແບບເຄື່ອນໄຫວ ທາງເລືອກ, ເມື່ອສ້າງຕໍາແຫນ່ງ
ການປະຕິບັດເປັນເອກະລາດ, ເພື່ອຜູກມັດການອ້າງອີງຂອງສັນຍາລັກທົ່ວໂລກກັບຄໍານິຍາມພາຍໃນ
ປະຕິບັດໄດ້. ຕົວເລືອກນີ້ມີຄວາມຫມາຍພຽງແຕ່ໃນເວທີ ELF ທີ່ສະຫນັບສະຫນູນການແບ່ງປັນ
ຫ້ອງສະຫມຸດແລະຕໍາແຫນ່ງປະຕິບັດເອກະລາດ.
- ການທໍາງານ Bsymbolic
ໃນເວລາທີ່ການສ້າງຫ້ອງສະຫມຸດທີ່ແບ່ງປັນ, ຜູກມັດການອ້າງອີງກັບສັນຍາລັກການທໍາງານຂອງທົ່ວໂລກກັບ
ຄໍານິຍາມພາຍໃນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ, ຖ້າມີ. ທາງເລືອກນີ້ຍັງສາມາດຖືກນໍາໃຊ້ກັບ
--ການສົ່ງອອກ-ແບບເຄື່ອນໄຫວ ທາງເລືອກ, ໃນເວລາທີ່ການສ້າງຕໍາແຫນ່ງເປັນເອກະລາດປະຕິບັດ, ການຜູກມັດ
ການອ້າງອີງເຖິງສັນຍາລັກຂອງຫນ້າທີ່ທົ່ວໂລກຕໍ່ກັບຄໍານິຍາມພາຍໃນການປະຕິບັດ. ນີ້
ທາງເລືອກແມ່ນມີຄວາມຫມາຍພຽງແຕ່ຢູ່ໃນເວທີ ELF ທີ່ສະຫນັບສະຫນູນຫ້ອງສະຫມຸດແລະຕໍາແຫນ່ງທີ່ແບ່ງປັນ
ການປະຕິບັດເອກະລາດ.
--dynamic-list=dynamic-list-file
ລະບຸຊື່ຂອງໄຟລ໌ລາຍຊື່ແບບເຄື່ອນໄຫວໃຫ້ກັບຕົວເຊື່ອມຕໍ່. ໂດຍທົ່ວໄປແລ້ວນີ້ແມ່ນໃຊ້ໃນເວລາທີ່
ການສ້າງຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນເພື່ອກໍານົດບັນຊີລາຍຊື່ຂອງສັນຍາລັກທົ່ວໂລກທີ່ມີການອ້າງອິງ
ບໍ່ຄວນຖືກຜູກມັດກັບຄໍານິຍາມພາຍໃນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ, ຫຼືການສ້າງ
ເຊື່ອມຕໍ່ແບບໄດນາມິກທີ່ສາມາດປະຕິບັດໄດ້ເພື່ອລະບຸລາຍຊື່ຂອງສັນຍາລັກທີ່ຄວນຈະຖືກເພີ່ມໃສ່
ຕາຕະລາງສັນຍາລັກໃນການປະຕິບັດ. ຕົວເລືອກນີ້ມີຄວາມຫມາຍພຽງແຕ່ຢູ່ໃນເວທີ ELF
ເຊິ່ງສະຫນັບສະຫນູນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ.
ຮູບແບບຂອງລາຍການແບບເຄື່ອນໄຫວແມ່ນຄືກັນກັບສະບັບ node ໂດຍບໍ່ມີຂອບເຂດ ແລະ node
ຊື່. ເບິ່ງ ເວີຊັ່ນ ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
--dynamic-list-data
ຮວມເອົາສັນຍາລັກຂໍ້ມູນທົ່ວໂລກທັງໝົດໃສ່ໃນລາຍການແບບເຄື່ອນໄຫວ.
--dynamic-list-cpp-new
ສະໜອງລາຍຊື່ໄດນາມິກໃນຕົວສຳລັບຕົວປະຕິບັດການ C++ ໃໝ່ ແລະລຶບອອກ. ມັນເປັນປະໂຫຍດຕົ້ນຕໍ
ສໍາລັບການສ້າງ libstdc++ ທີ່ໃຊ້ຮ່ວມກັນ.
--dynamic-list-cpp-typeinfo
ສະໜອງລາຍຊື່ໄດນາມິກໃນຕົວສຳລັບການລະບຸປະເພດແລ່ນ C++.
-- ກວດສອບພາກສ່ວນ
--no-check-sections
ຖາມຕົວເຊື່ອມຕໍ່ ບໍ່ ເພື່ອກວດເບິ່ງທີ່ຢູ່ຂອງພາກຫຼັງຈາກພວກເຂົາໄດ້ຖືກມອບຫມາຍເພື່ອເບິ່ງວ່າ
ມີການທັບຊ້ອນກັນ. ປົກກະຕິແລ້ວຕົວເຊື່ອມຕໍ່ຈະປະຕິບັດການກວດສອບນີ້, ແລະຖ້າມັນພົບ
ການທັບຊ້ອນໃດໆມັນຈະຜະລິດຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດທີ່ເຫມາະສົມ. linker ບໍ່ຮູ້ກ່ຽວກັບ, ແລະ
ບໍ່ເຮັດໃຫ້ເງິນອຸດຫນູນສໍາລັບພາກສ່ວນໃນ overlays. ພຶດຕິກໍາເລີ່ມຕົ້ນສາມາດຟື້ນຟູໄດ້
ໂດຍການນໍາໃຊ້ສະຫຼັບເສັ້ນຄໍາສັ່ງ -- ກວດສອບພາກສ່ວນ. ການທັບຊ້ອນຂອງພາກສ່ວນແມ່ນບໍ່ປົກກະຕິ
ກວດເບິ່ງການເຊື່ອມຕໍ່ທີ່ສາມາດຍ້າຍໄດ້. ທ່ານສາມາດບັງຄັບການກວດສອບໃນກໍລະນີນັ້ນໂດຍການນໍາໃຊ້
-- ກວດສອບພາກສ່ວນ ທາງເລືອກ.
--copy-dt-needed-entries
--no-copy-dt-needed-entries
ຕົວເລືອກນີ້ມີຜົນຕໍ່ການປິ່ນປົວຫ້ອງສະໝຸດແບບເຄື່ອນໄຫວທີ່ອ້າງອີງໂດຍແທັກ DT_NEEDED
ພາຍໃນ ຫ້ອງສະຫມຸດແບບເຄື່ອນໄຫວ ELF ທີ່ໄດ້ກ່າວມາຢູ່ໃນເສັ້ນຄໍາສັ່ງ. ປົກກະຕິແລ້ວຕົວເຊື່ອມຕໍ່ຈະບໍ່
ເພີ່ມແທໍກ DT_NEEDED ໃສ່ແທໍກສອງຜົນສໍາລັບແຕ່ລະຫ້ອງສະໝຸດທີ່ກ່າວເຖິງໃນແທັກ DT_NEEDED
ໃນຫ້ອງສະໝຸດໄດນາມິກການປ້ອນຂໍ້ມູນ. ກັບ --copy-dt-needed-entries ລະບຸໄວ້ໃນຄໍາສັ່ງ
ແນວໃດກໍ່ຕາມຫ້ອງສະໝຸດແບບເຄື່ອນໄຫວທີ່ຕິດຕາມມັນຈະມີລາຍການ DT_NEEDED ຂອງເຂົາເຈົ້າ
ເພີ່ມ. ພຶດຕິກໍາເລີ່ມຕົ້ນສາມາດໄດ້ຮັບການຟື້ນຟູດ້ວຍ --no-copy-dt-needed-entries.
ຕົວເລືອກນີ້ຍັງມີຜົນກະທົບຕໍ່ການແກ້ໄຂຂອງສັນຍາລັກໃນຫ້ອງສະຫມຸດແບບເຄື່ອນໄຫວ.
ກັບ --copy-dt-needed-entries ຫ້ອງສະຫມຸດແບບເຄື່ອນໄຫວທີ່ໄດ້ກ່າວມາໃນເສັ້ນຄໍາສັ່ງຈະເປັນ
ຄົ້ນຫາແບບຊ້ຳໆ, ຕິດຕາມແທັກ DT_NEEDED ຂອງພວກເຂົາໄປຫາຫ້ອງສະໝຸດອື່ນໆ, ເພື່ອ
ແກ້ໄຂສັນຍາລັກທີ່ຕ້ອງການໂດຍ binary ຜົນຜະລິດ. ຢ່າງໃດກໍຕາມ, ດ້ວຍການຕັ້ງຄ່າເລີ່ມຕົ້ນ
ການຊອກຫາຫ້ອງສະໝຸດແບບເຄື່ອນໄຫວທີ່ຕິດຕາມມັນຈະຢຸດດ້ວຍຫ້ອງສະໝຸດແບບເຄື່ອນໄຫວ
ຕົວຂອງມັນເອງ. ບໍ່ມີລິ້ງ DT_NEEDED ຈະຖືກຂ້າມໄປເພື່ອແກ້ໄຂສັນຍາລັກ.
--cref
ອອກຕາຕະລາງອ້າງອີງຂ້າມ. ຖ້າໄຟລ໌ແຜນທີ່ linker ກໍາລັງຖືກສ້າງຂື້ນ, ຂ້າມ
ຕາຕະລາງອ້າງອີງຖືກພິມໃສ່ໄຟລ໌ແຜນທີ່. ຖ້າບໍ່ດັ່ງນັ້ນ, ມັນຖືກພິມຢູ່ໃນມາດຕະຖານ
ຜົນຜະລິດ.
ຮູບແບບຂອງຕາຕະລາງແມ່ນງ່າຍດາຍໂດຍເຈດຕະນາ, ດັ່ງນັ້ນມັນອາດຈະໄດ້ຮັບການປຸງແຕ່ງໄດ້ຢ່າງງ່າຍດາຍໂດຍ
script ຖ້າຈໍາເປັນ. ສັນຍາລັກໄດ້ຖືກພິມອອກ, ຈັດຮຽງຕາມຊື່. ສໍາລັບແຕ່ລະສັນຍາລັກ,
ບັນຊີລາຍຊື່ຂອງຊື່ໄຟລ໌ໄດ້ຖືກມອບໃຫ້. ຖ້າສັນຍາລັກຖືກກໍານົດ, ໄຟລ໌ທໍາອິດທີ່ລະບຸໄວ້ແມ່ນ
ທີ່ຕັ້ງຂອງຄໍານິຍາມ. ຖ້າສັນຍາລັກຖືກກໍານົດເປັນຄ່າທົ່ວໄປຫຼັງຈາກນັ້ນໄຟລ໌ໃດໆ
ບ່ອນທີ່ສິ່ງນີ້ເກີດຂຶ້ນຕໍ່ໄປ. ສຸດທ້າຍໄຟລ໌ໃດໆທີ່ອ້າງເຖິງສັນຍາລັກແມ່ນ
ລາຍຊື່.
--no-define-common
ຕົວເລືອກນີ້ຍັບຍັ້ງການມອບຫມາຍທີ່ຢູ່ໃຫ້ກັບສັນຍາລັກທົ່ວໄປ. ສະຄຣິບ
ຄໍາສັ່ງ "INHIBIT_COMMON_ALLOCATION" ມີຜົນຄືກັນ.
ໄດ້ --no-define-common ທາງເລືອກອະນຸຍາດໃຫ້ decoupling ການຕັດສິນໃຈມອບຫມາຍທີ່ຢູ່
ສັນຍາລັກທົ່ວໄປຈາກທາງເລືອກຂອງປະເພດໄຟລ໌ຜົນຜະລິດ; ຖ້າບໍ່ດັ່ງນັ້ນແມ່ນບໍ່ສາມາດຍົກຍ້າຍໄດ້
ປະເພດຜົນຜະລິດບັງຄັບໃຫ້ກໍານົດທີ່ຢູ່ໃຫ້ກັບສັນຍາລັກທົ່ວໄປ. ການນໍາໃຊ້ --no-define-common
ອະນຸຍາດໃຫ້ສັນຍາລັກທົ່ວໄປທີ່ອ້າງອີງຈາກຫ້ອງສະຫມຸດທີ່ແບ່ງປັນໄດ້ຮັບການມອບຫມາຍ
ທີ່ຢູ່ພຽງແຕ່ຢູ່ໃນໂຄງການຕົ້ນຕໍ. ນີ້ກໍາຈັດພື້ນທີ່ຊ້ໍາກັນທີ່ບໍ່ໄດ້ໃຊ້ໃນ
ຫໍສະໝຸດທີ່ໃຊ້ຮ່ວມກັນ, ແລະຍັງປ້ອງກັນຄວາມສັບສົນທີ່ອາດເປັນໄປໄດ້ໃນການແກ້ໄຂຂໍ້ຜິດພາດ
duplicate ໃນເວລາທີ່ມີຫຼາຍໂມດູນແບບເຄື່ອນໄຫວທີ່ມີເສັ້ນທາງຄົ້ນຫາພິເສດສໍາລັບ
ຄວາມລະອຽດສັນຍາລັກ runtime.
--defsym=ສັນຍາລັກ=ການສະແດງອອກ
ສ້າງສັນຍາລັກທົ່ວໂລກໃນໄຟລ໌ຜົນຜະລິດໄດ້, ປະກອບດ້ວຍທີ່ຢູ່ຢ່າງແທ້ຈິງໃຫ້ໂດຍ
ການສະແດງອອກ. ເຈົ້າອາດຈະໃຊ້ຕົວເລືອກນີ້ຫຼາຍເທື່ອເທົ່າທີ່ຈຳເປັນເພື່ອກຳນົດຫຼາຍອັນ
ສັນຍາລັກໃນເສັ້ນຄໍາສັ່ງ. ຮູບແບບຈໍາກັດຂອງເລກຄະນິດສາດແມ່ນສະຫນັບສະຫນູນສໍາລັບການ
ການສະແດງອອກ ໃນສະພາບການນີ້: ທ່ານອາດຈະໃຫ້ຄ່າຄົງທີ່ຂອງເລກຖານສິບຫົກຫຼືຊື່ຂອງ an
ສັນຍາລັກທີ່ມີຢູ່ແລ້ວ, ຫຼືໃຊ້ "+" ແລະ "-" ເພື່ອເພີ່ມຫຼືລົບຄ່າຄົງທີ່ຂອງເລກຖານສິບຫົກຫຼື
ສັນຍາລັກ. ຖ້າທ່ານຕ້ອງການການສະແດງອອກທີ່ລະອຽດກວ່າ, ໃຫ້ພິຈາລະນາໃຊ້ຄໍາສັ່ງ linker
ພາສາຈາກ script. ຫມາຍເຫດ: ບໍ່ຄວນມີຊ່ອງຫວ່າງລະຫວ່າງ ສັນຍາລັກ, ການ
ເຄື່ອງໝາຍເທົ່າກັບ ("="), ແລະ ການສະແດງອອກ.
--demangle[=ແບບ]
-- ບໍ່ມີການຂັດຂວາງ
ທາງເລືອກເຫຼົ່ານີ້ຄວບຄຸມວ່າຈະ demangle ຊື່ສັນຍາລັກໃນຂໍ້ຄວາມຜິດພາດແລະອື່ນໆ
ຜົນຜະລິດ. ເມື່ອຕົວເຊື່ອມຕໍ່ຖືກບອກໃຫ້ demangle, ມັນພະຍາຍາມນໍາສະເຫນີຊື່ສັນຍາລັກໃນ a
ແຟຊັ່ນທີ່ສາມາດອ່ານໄດ້: ມັນລອກເອົາຈຸດຂີດກ້ອງອອກຖ້າພວກມັນຖືກໃຊ້ໂດຍໄຟລ໌ວັດຖຸ
ຮູບແບບ, ແລະປ່ຽນ C++ ຊື່ສັນຍາລັກ mangled ເປັນຊື່ທີ່ຜູ້ໃຊ້ສາມາດອ່ານໄດ້. ແຕກຕ່າງກັນ
compilers ມີຮູບແບບ mangling ທີ່ແຕກຕ່າງກັນ. ການໂຕ້ຖຽງແບບ demangling ທາງເລືອກສາມາດ
ຖືກນໍາໃຊ້ເພື່ອເລືອກຮູບແບບ demangling ທີ່ເຫມາະສົມສໍາລັບ compiler ຂອງທ່ານ. ຕົວເຊື່ອມຕໍ່ຈະ
demangle ໂດຍຄ່າເລີ່ມຕົ້ນເວັ້ນເສຍແຕ່ວ່າສະພາບແວດລ້ອມມີການປ່ຽນແປງ COLLECT_NO_DEMANGLE ຖືກກໍານົດ. ເຫຼົ່ານີ້
ຕົວເລືອກອາດຈະຖືກໃຊ້ເພື່ອລົບລ້າງຄ່າເລີ່ມຕົ້ນ.
-Iເອກະສານ
--dynamic-linker=ເອກະສານ
ກໍານົດຊື່ຂອງຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວ. ນີ້ແມ່ນຄວາມຫມາຍພຽງແຕ່ໃນເວລາທີ່ສ້າງ
ເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວ ELF ປະຕິບັດໄດ້. ຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວເລີ່ມຕົ້ນແມ່ນຖືກຕ້ອງຕາມປົກກະຕິ;
ຢ່າໃຊ້ອັນນີ້ເວັ້ນເສຍແຕ່ວ່າທ່ານຮູ້ວ່າທ່ານກໍາລັງເຮັດຫຍັງ.
--no-dynamic-linker
ເມື່ອຜະລິດໄຟລ໌ທີ່ສາມາດປະຕິບັດໄດ້, ຍົກເລີກການຮ້ອງຂໍສໍາລັບຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວທີ່ຈະຖືກນໍາໃຊ້ຢູ່
ເວລາໂຫຼດ. ນີ້ແມ່ນຄວາມຫມາຍພຽງແຕ່ສໍາລັບການປະຕິບັດ ELF ທີ່ມີການເຄື່ອນໄຫວ
ການຍົກຍ້າຍ, ແລະປົກກະຕິແລ້ວຮຽກຮ້ອງໃຫ້ມີລະຫັດຈຸດເຂົ້າທີ່ມີຄວາມສາມາດປະມວນຜົນເຫຼົ່ານີ້
ການຍົກຍ້າຍ.
-- ເຕືອນໄພອັນຕະລາຍ
-- ບໍ່ມີການເຕືອນໄພອັນຕະລາຍ
ປະຕິບັດການເຕືອນໄພທັງຫມົດເປັນຄວາມຜິດພາດ. ພຶດຕິກໍາເລີ່ມຕົ້ນສາມາດໄດ້ຮັບການຟື້ນຟູດ້ວຍທາງເລືອກ
-- ບໍ່ມີການເຕືອນໄພອັນຕະລາຍ.
--force-exe-suffix
ໃຫ້ແນ່ໃຈວ່າໄຟລ໌ຜົນຜະລິດມີຄໍາຕໍ່ທ້າຍ .exe.
ຖ້າຫາກວ່າໄຟລ໌ຜົນຜະລິດທີ່ເຊື່ອມໂຍງຢ່າງເຕັມທີ່ສ້າງສໍາເລັດບໍ່ມີ ".exe" ຫຼື ".dll".
ຄໍາຕໍ່ທ້າຍ, ທາງເລືອກນີ້ບັງຄັບໃຫ້ຕົວເຊື່ອມຕໍ່ເພື່ອຄັດລອກໄຟລ໌ຜົນຜະລິດໄປຫາຫນຶ່ງໃນຊື່ດຽວກັນ
ດ້ວຍຄຳຕໍ່ທ້າຍ ".exe". ຕົວເລືອກນີ້ແມ່ນເປັນປະໂຫຍດໃນເວລາທີ່ການນໍາໃຊ້ unmodified makefiles Unix ໃນ a
Microsoft Windows host, ເນື່ອງຈາກວ່າບາງລຸ້ນຂອງ Windows ຈະບໍ່ດໍາເນີນການຮູບພາບເວັ້ນເສຍແຕ່ວ່າມັນ
ສິ້ນສຸດດ້ວຍ ".exe" ຕໍ່ທ້າຍ.
--gc-sections
--no-gc-sections
ເປີດໃຊ້ການເກັບຂີ້ເຫຍື້ອຂອງພາກສ່ວນປ້ອນຂໍ້ມູນທີ່ບໍ່ໄດ້ໃຊ້. ມັນຖືກລະເລີຍໃນເປົ້າໝາຍທີ່ເຮັດ
ບໍ່ຮອງຮັບຕົວເລືອກນີ້. ພຶດຕິກໍາເລີ່ມຕົ້ນ (ຂອງການບໍ່ປະຕິບັດການຂີ້ເຫຍື້ອນີ້
collection) ສາມາດຟື້ນຟູໄດ້ໂດຍການລະບຸ --no-gc-sections ຢູ່ໃນເສັ້ນຄໍາສັ່ງ. ຫມາຍເຫດ
ວ່າການເກັບຂີ້ເຫຍື້ອສໍາລັບເປົ້າຫມາຍຮູບແບບ COFF ແລະ PE ແມ່ນສະຫນັບສະຫນູນ, ແຕ່ວ່າ
ການປະຕິບັດໃນປັດຈຸບັນແມ່ນຖືວ່າເປັນການທົດລອງ.
--gc-sections ຕັດສິນໃຈທີ່ພາກສ່ວນປ້ອນຂໍ້ມູນໄດ້ຖືກນໍາໃຊ້ໂດຍການກວດສອບສັນຍາລັກແລະ
ການຍົກຍ້າຍ. ພາກສ່ວນທີ່ມີສັນຍາລັກເຂົ້າ ແລະທຸກພາກສ່ວນທີ່ມີ
ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດໄວ້ໃນບັນຊີຄໍາສັ່ງຈະໄດ້ຮັບການເກັບຮັກສາໄວ້, ເຊັ່ນດຽວກັນກັບພາກສ່ວນທີ່ປະກອບດ້ວຍ
ສັນຍາລັກທີ່ອ້າງອີງໂດຍວັດຖຸແບບເຄື່ອນໄຫວ. ໃຫ້ສັງເກດວ່າເມື່ອສ້າງຫ້ອງສະຫມຸດຮ່ວມກັນ, ໄດ້
linker ຕ້ອງສົມມຸດວ່າສັນຍາລັກທີ່ເຫັນໄດ້ຊັດເຈນແມ່ນອ້າງອີງ. ເມື່ອຊຸດເບື້ອງຕົ້ນນີ້
ພາກສ່ວນໄດ້ຖືກກໍານົດ, ຕົວເຊື່ອມຕໍ່ recursively marks ເປັນການນໍາໃຊ້ພາກສ່ວນໃດ
ອ້າງອິງໂດຍການຍົກຍ້າຍຂອງພວກເຂົາ. ເບິ່ງ --ເຂົ້າ ແລະ -- ບໍ່ໄດ້ກໍານົດ.
ຕົວເລືອກນີ້ສາມາດຖືກຕັ້ງໃນເວລາທີ່ເຮັດການເຊື່ອມຕໍ່ບາງສ່ວນ (ເປີດໃຊ້ດ້ວຍທາງເລືອກ -r). ໃນນີ້
ກໍລະນີທີ່ຮາກຂອງສັນຍາລັກທີ່ເກັບຮັກສາໄວ້ຈະຕ້ອງໄດ້ຮັບການລະບຸຢ່າງຊັດເຈນໂດຍການ --ເຂົ້າ or
-- ບໍ່ໄດ້ກໍານົດ ທາງເລືອກຫຼືໂດຍຄໍາສັ່ງ "ENTRY" ໃນຕົວເຊື່ອມຕໍ່.
--print-gc-sections
--no-print-gc-sections
ລາຍຊື່ທຸກພາກສ່ວນທີ່ຖືກໂຍກຍ້າຍໂດຍການເກັບຂີ້ເຫຍື້ອ. ລາຍຊື່ແມ່ນພິມຢູ່ໃນ stderr.
ທາງເລືອກນີ້ແມ່ນມີປະສິດທິພາບພຽງແຕ່ຖ້າການເກັບຂີ້ເຫຍື້ອໄດ້ຖືກເປີດໃຊ້ຜ່ານທາງ
--gc-sections) ທາງເລືອກ. ພຶດຕິກຳເລີ່ມຕົ້ນ (ບໍ່ສະແດງລາຍການພາກສ່ວນທີ່ເປັນ
ເອົາອອກ) ສາມາດຟື້ນຟູໄດ້ໂດຍການລະບຸ --no-print-gc-sections ຢູ່ໃນເສັ້ນຄໍາສັ່ງ.
--print-output-format
ພິມຊື່ຂອງຮູບແບບຜົນຜະລິດເລີ່ມຕົ້ນ (ບາງທີອາດມີອິດທິພົນຈາກເສັ້ນຄໍາສັ່ງອື່ນໆ
ທາງເລືອກ). ນີ້ແມ່ນສະຕຣິງທີ່ຈະປາກົດຢູ່ໃນຕົວເຊື່ອມຕໍ່ "OUTPUT_FORMAT".
ຄໍາສັ່ງ.
--print-memory-usage
ພິມຂະຫນາດທີ່ໃຊ້, ຂະຫນາດທັງຫມົດແລະຂະຫນາດທີ່ໃຊ້ຂອງພື້ນທີ່ຫນ່ວຍຄວາມຈໍາທີ່ສ້າງຂຶ້ນດ້ວຍ ຫນ່ວຍຄວາມຈໍາ
ຄໍາສັ່ງ. ນີ້ແມ່ນເປັນປະໂຫຍດໃນເປົ້າຫມາຍທີ່ຝັງຕົວເພື່ອໃຫ້ມີການສະແດງຜົນໄວຂອງຈໍານວນຟຣີ
ຄວາມຊົງຈໍາ. ຮູບແບບຂອງຜົນຜະລິດມີຫົວຂໍ້ຫນຶ່ງແລະຫນຶ່ງແຖວຕໍ່ພາກພື້ນ. ມັນແມ່ນ
ທັງມະນຸດສາມາດອ່ານໄດ້ ແລະ parsable ໄດ້ຢ່າງງ່າຍດາຍໂດຍເຄື່ອງມື. ນີ້ແມ່ນຕົວຢ່າງຂອງຜົນຜະລິດ:
ພື້ນທີ່ໜ່ວຍຄວາມຈຳທີ່ໃຊ້ແລ້ວ ຂະໜາດພາກພື້ນຂະໜາດ %age ໃຊ້ແລ້ວ
ROM: 256 KB 1 MB 25.00%
RAM: 32 B 2 GB 0.00%
- ຊ່ວຍ
ພິມບົດສະຫຼຸບຂອງຕົວເລືອກແຖວຄໍາສັ່ງກ່ຽວກັບຜົນໄດ້ຮັບມາດຕະຖານແລະອອກ.
--ເປົ້າຫມາຍການຊ່ວຍເຫຼືອ
ພິມບົດສະຫຼຸບຂອງຕົວເລືອກສະເພາະເປົ້າໝາຍທັງໝົດຢູ່ໃນຜົນຜະລິດມາດຕະຖານ ແລະອອກ.
-ແຜນທີ່=ໄຟລ໌ແຜນທີ່
ພິມແຜນທີ່ເຊື່ອມຕໍ່ໃສ່ໄຟລ໌ ໄຟລ໌ແຜນທີ່. ເບິ່ງລາຍລະອຽດຂອງ -M ທາງເລືອກ, ຂ້າງເທິງ.
--no-keep-memory
ld ປົກກະຕິແລ້ວ optimizes ສໍາລັບຄວາມໄວໃນໄລຍະການນໍາໃຊ້ຫນ່ວຍຄວາມຈໍາໂດຍການ caching ຕາຕະລາງສັນຍາລັກຂອງ
ປ້ອນໄຟລ໌ໃນຫນ່ວຍຄວາມຈໍາ. ທາງເລືອກນີ້ບອກ ld ແທນທີ່ຈະເພີ່ມປະສິດທິພາບສໍາລັບການນໍາໃຊ້ຫນ່ວຍຄວາມຈໍາ, ໂດຍ
ການອ່ານຕາຕະລາງສັນຍາລັກຄືນໃໝ່ຕາມຄວາມຈໍາເປັນ. ນີ້ອາດຈະຕ້ອງການຖ້າຫາກວ່າ ld ແລ່ນອອກຈາກ
ພື້ນທີ່ຫນ່ວຍຄວາມຈໍາໃນຂະນະທີ່ເຊື່ອມຕໍ່ການປະຕິບັດຂະຫນາດໃຫຍ່.
--no-undefined
-z defs
ລາຍງານການອ້າງອີງສັນຍາລັກທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂຈາກໄຟລ໌ວັດຖຸປົກກະຕິ. ນີ້ແມ່ນເຮັດໄດ້ເຖິງແມ່ນວ່າ
linker ກໍາລັງສ້າງຫ້ອງສະຫມຸດແບ່ງປັນທີ່ບໍ່ແມ່ນສັນຍາລັກ. ສະຫຼັບ
--[no-]allow-shlib-undefined ຄວບຄຸມພຶດຕິກໍາການລາຍງານທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂ
ການອ້າງອິງທີ່ພົບເຫັນຢູ່ໃນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນຖືກເຊື່ອມຕໍ່ໃນ.
--allow-multiple-definition
-z muldefs
ໂດຍປົກກະຕິເມື່ອສັນຍາລັກຖືກກໍານົດຫຼາຍຄັ້ງ, ຕົວເຊື່ອມຕໍ່ຈະລາຍງານຄວາມຕາຍ
ຄວາມຜິດພາດ. ທາງເລືອກເຫຼົ່ານີ້ອະນຸຍາດໃຫ້ຫຼາຍຄໍານິຍາມແລະຄໍານິຍາມທໍາອິດຈະຖືກນໍາໃຊ້.
--allow-shlib-undefined
--no-allow-shlib-undefined
ອະນຸຍາດໃຫ້ຫຼືບໍ່ອະນຸຍາດໃຫ້ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດຢູ່ໃນຫ້ອງສະຫມຸດທີ່ແບ່ງປັນ. ສະຫຼັບນີ້ແມ່ນຄ້າຍຄືກັນກັບ
--no-undefined ຍົກເວັ້ນວ່າມັນກໍານົດພຶດຕິກໍາໃນເວລາທີ່ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດ
ໃນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນແທນທີ່ຈະເປັນໄຟລ໌ວັດຖຸປົກກະຕິ. ມັນບໍ່ມີຜົນກະທົບແນວໃດ
ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດໄວ້ໃນໄຟລ໌ວັດຖຸປົກກະຕິແມ່ນຖືກຈັດການ.
ພຶດຕິກໍາເລີ່ມຕົ້ນແມ່ນການລາຍງານຄວາມຜິດພາດສໍາລັບສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດໃດໆທີ່ອ້າງອີງໃນ
ຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນຖ້າຕົວເຊື່ອມຕໍ່ຖືກນໍາໃຊ້ເພື່ອສ້າງການປະຕິບັດ, ແຕ່ອະນຸຍາດໃຫ້
ພວກເຂົາຖ້າຕົວເຊື່ອມຕໍ່ຖືກໃຊ້ເພື່ອສ້າງຫ້ອງສະຫມຸດທີ່ແບ່ງປັນ.
ເຫດຜົນສໍາລັບການອະນຸຍາດໃຫ້ອ້າງອິງສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດຢູ່ໃນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນໄດ້ລະບຸໄວ້ຢູ່ທີ່
ທີ່ໃຊ້ເວລາການເຊື່ອມຕໍ່ແມ່ນວ່າ:
· ຫ້ອງສະໝຸດທີ່ໃຊ້ຮ່ວມກັນທີ່ລະບຸໄວ້ໃນເວລາເຊື່ອມຕໍ່ອາດຈະບໍ່ຄືກັບອັນນັ້ນ
ມີຢູ່ໃນເວລາໂຫຼດ, ດັ່ງນັ້ນສັນຍາລັກອາດຈະຖືກແກ້ໄຂໃນເວລາໂຫຼດ.
· ມີບາງລະບົບປະຕິບັດການ, ເຊັ່ນ: BeOS ແລະ HPPA, ບ່ອນທີ່ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດຢູ່ໃນ
ຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນແມ່ນປົກກະຕິ.
ຕົວຢ່າງເຊັ່ນ BeOS kernel ແກ້ໄຂຫ້ອງສະໝຸດທີ່ໃຊ້ຮ່ວມກັນໃນເວລາໂຫຼດເພື່ອເລືອກ
ຟັງຊັນໃດທີ່ເໝາະສົມທີ່ສຸດສຳລັບສະຖາປັດຕະຍະກຳປະຈຸບັນ. ນີ້ແມ່ນ
ຕົວຢ່າງ, ໃຊ້ເພື່ອເລືອກຟັງຊັນ memset ທີ່ເຫມາະສົມ.
--no-undefined-version
ໂດຍປົກກະຕິເມື່ອສັນຍາລັກມີສະບັບທີ່ບໍ່ໄດ້ກໍານົດ, ຕົວເຊື່ອມຕໍ່ຈະບໍ່ສົນໃຈມັນ. ນີ້
ທາງເລືອກບໍ່ອະນຸຍາດໃຫ້ສັນຍາລັກທີ່ມີສະບັບທີ່ບໍ່ໄດ້ກໍານົດແລະຄວາມຜິດພາດເຖິງຕາຍຈະໄດ້ຮັບການອອກ
ແທນທີ່ຈະເປັນ.
--default-symver
ສ້າງແລະນໍາໃຊ້ສະບັບສັນຍາລັກເລີ່ມຕົ້ນ (ຊື່ soname) ສໍາລັບສັນຍາລັກທີ່ສົ່ງອອກ unversioned.
--default-imported-symver
ສ້າງແລະໃຊ້ສັນຍາລັກເລີ່ມຕົ້ນສະບັບ (ຊື່ soname) ສໍາລັບສັນຍາລັກນໍາເຂົ້າ unversioned.
--no-warn-mismatch
ປົກກະຕິແລ້ວ ld ຈະໃຫ້ຄວາມຜິດພາດຖ້າທ່ານພະຍາຍາມເຊື່ອມຕໍ່ເຂົ້າກັນກັບໄຟລ໌ທີ່ປ້ອນເຂົ້າກັນ
ບໍ່ກົງກັນສໍາລັບເຫດຜົນບາງຢ່າງ, ບາງທີອາດຍ້ອນວ່າພວກເຂົາໄດ້ຖືກລວບລວມສໍາລັບທີ່ແຕກຕ່າງກັນ
ໂປເຊດເຊີຫຼືສໍາລັບ endiannesses ທີ່ແຕກຕ່າງກັນ. ທາງເລືອກນີ້ບອກ ld ທີ່ມັນຄວນຈະ
ອະນຸຍາດໃຫ້ມີຄວາມຜິດພາດທີ່ເປັນໄປໄດ້ດັ່ງກ່າວຢ່າງງຽບໆ. ທາງເລືອກນີ້ຄວນຈະຖືກນໍາໃຊ້ພຽງແຕ່ລະມັດລະວັງ, ໃນ
ກໍລະນີໃນເວລາທີ່ທ່ານໄດ້ດໍາເນີນການພິເສດບາງຢ່າງທີ່ຮັບປະກັນວ່າມີຂໍ້ຜິດພາດຂອງຕົວເຊື່ອມຕໍ່
ບໍ່ເຫມາະສົມ.
--no-warn-search-mismatch
ປົກກະຕິແລ້ວ ld ຈະໃຫ້ຄໍາເຕືອນຖ້າຫາກວ່າມັນພົບເຫັນຫ້ອງສະຫມຸດທີ່ບໍ່ເຂົ້າກັນໄດ້ໃນລະຫວ່າງຫ້ອງສະຫມຸດ
ຄົ້ນຫາ. ຕົວເລືອກນີ້ປິດສຽງເຕືອນ.
--no-whole-archive
ປິດຜົນກະທົບຂອງ --ຮວບຮວມທັງໝົດ ທາງເລືອກສໍາລັບໄຟລ໌ທີ່ເກັບໄວ້ຕໍ່ໄປ.
--noinhibit-exec
ຮັກສາໄຟລ໌ຜົນຜະລິດທີ່ສາມາດປະຕິບັດໄດ້ທຸກຄັ້ງທີ່ມັນຍັງສາມາດໃຊ້ໄດ້. ໂດຍປົກກະຕິ, ຕົວເຊື່ອມຕໍ່
ຈະບໍ່ຜະລິດໄຟລ໌ຜົນຜະລິດຖ້າຫາກວ່າມັນພົບຄວາມຜິດພາດໃນລະຫວ່າງການຂະບວນການເຊື່ອມຕໍ່; ມັນ
ອອກໂດຍບໍ່ມີການຂຽນໄຟລ໌ຜົນຜະລິດໃນເວລາທີ່ມັນອອກຂໍ້ຜິດພາດໃດໆ.
-nostdlib
ພຽງແຕ່ຊອກຫາໄດເລກະທໍລີຫ້ອງສະຫມຸດທີ່ລະບຸຢ່າງຊັດເຈນຢູ່ໃນເສັ້ນຄໍາສັ່ງ. ຫໍສະໝຸດ
ໄດເລກະທໍລີທີ່ລະບຸໄວ້ໃນສະຄຣິບຕົວເຊື່ອມຕໍ່ (ລວມທັງສະຄຣິບຕົວເຊື່ອມຕໍ່ທີ່ລະບຸໄວ້ໃນ
ເສັ້ນຄໍາສັ່ງ) ຖືກລະເລີຍ.
--oformat=ຮູບແບບຜົນຜະລິດ
ld ອາດຈະໄດ້ຮັບການຕັ້ງຄ່າເພື່ອສະຫນັບສະຫນູນຫຼາຍກ່ວາຫນຶ່ງປະເພດຂອງໄຟລ໌ວັດຖຸ. ຖ້າເຈົ້າ ld is
configured ດ້ວຍວິທີນີ້, ທ່ານສາມາດນໍາໃຊ້ -- ຮູບແບບ ທາງເລືອກທີ່ຈະລະບຸຮູບແບບຄູ່ສໍາລັບການ
ໄຟລ໌ວັດຖຸຜົນຜະລິດ. ເຖິງແມ່ນວ່າເວລາ ld ຖືກຕັ້ງຄ່າເພື່ອຮອງຮັບວັດຖຸທາງເລືອກ
ຮູບແບບ, ທ່ານບໍ່ຈໍາເປັນຕ້ອງກໍານົດນີ້, ເປັນ ld ຄວນຈະຖືກຕັ້ງຄ່າເພື່ອຜະລິດ
ເປັນຮູບແບບຜົນຜະລິດເລີ່ມຕົ້ນເປັນຮູບແບບປົກກະຕິທີ່ສຸດໃນແຕ່ລະເຄື່ອງ. ຮູບແບບຜົນຜະລິດ ເປັນ
ຂໍ້ຄວາມ, ຊື່ຂອງຮູບແບບສະເພາະທີ່ສະຫນັບສະຫນຸນໂດຍຫ້ອງສະຫມຸດ BFD. (ເຈົ້າສາມາດ
ລາຍຊື່ຮູບແບບຖານສອງທີ່ມີຢູ່ກັບ objdump -i.) ຄໍາສັ່ງ script
"OUTPUT_FORMAT" ຍັງສາມາດລະບຸຮູບແບບຜົນຜະລິດໄດ້, ແຕ່ທາງເລືອກນີ້ overrides ມັນ.
-pie
--pic-executable
ສ້າງຕໍາແຫນ່ງເປັນເອກະລາດປະຕິບັດໄດ້. ປະຈຸບັນນີ້ຮອງຮັບສະເພາະໃນ ELF ເທົ່ານັ້ນ
ເວທີ. ຕໍາແຫນ່ງປະຕິບັດເອກະລາດແມ່ນຄ້າຍຄືກັນກັບຫ້ອງສະຫມຸດຮ່ວມກັນໃນນັ້ນ
ພວກມັນຖືກຍົກຍ້າຍໂດຍຕົວເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວໄປຫາທີ່ຢູ່ virtual ທີ່ OS ເລືອກ
ພວກມັນ (ເຊິ່ງສາມາດແຕກຕ່າງກັນລະຫວ່າງການຮຽກຮ້ອງ). ເຊັ່ນດຽວກັນກັບການດໍາເນີນການເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວແບບປົກກະຕິ
ພວກເຂົາສາມາດຖືກປະຕິບັດໄດ້ແລະສັນຍາລັກທີ່ຖືກກໍານົດໄວ້ໃນການປະຕິບັດບໍ່ສາມາດຖືກລົບລ້າງໂດຍ
ຫ້ອງສະໝຸດທີ່ແບ່ງປັນ.
-qmagic
ຕົວເລືອກນີ້ຖືກລະເລີຍສໍາລັບຄວາມເຂົ້າກັນໄດ້ຂອງ Linux.
- ຖາມ ຕົວເລືອກນີ້ຖືກລະເລີຍສໍາລັບຄວາມເຂົ້າກັນໄດ້ຂອງ SVR4.
--ພັກຜ່ອນ
--ບໍ່ຜ່ອນຄາຍ
ທາງເລືອກທີ່ມີຜົນກະທົບທີ່ຂຶ້ນກັບເຄື່ອງຈັກ. ທາງເລືອກນີ້ແມ່ນສະຫນັບສະຫນູນພຽງແຕ່ໃນຈໍານວນຫນຶ່ງ
ເປົ້າ ໝາຍ.
ໃນບາງເວທີ --ພັກຜ່ອນ ທາງເລືອກປະຕິບັດເປົ້າຫມາຍສະເພາະ, ການເພີ່ມປະສິດທິພາບທົ່ວໂລກ
ທີ່ເປັນໄປໄດ້ເມື່ອຕົວເຊື່ອມຕໍ່ແກ້ໄຂທີ່ຢູ່ໃນໂຄງການ, ເຊັ່ນ:
ຮູບແບບທີ່ຢູ່ທີ່ຜ່ອນຄາຍ, ການສັງເຄາະຄໍາແນະນໍາໃຫມ່, ເລືອກເອົາສະບັບສັ້ນຂອງ
ຄໍາແນະນໍາໃນປະຈຸບັນ, ແລະການລວມມູນຄ່າຄົງທີ່.
ໃນບາງເວທີການເຊື່ອມຕໍ່ເຫຼົ່ານີ້ການເພີ່ມປະສິດທິພາບທົ່ວໂລກອາດຈະເຮັດໃຫ້ການດີບັກສັນຍາລັກຂອງ
ຜົນໄດ້ຮັບການປະຕິບັດເປັນໄປບໍ່ໄດ້. ນີ້ແມ່ນເປັນທີ່ຮູ້ກັນວ່າເປັນກໍລະນີຂອງ Matsushita
ໂຮງງານຜະລິດໃນຄອບຄົວ MN10200 ແລະ MN10300.
ໃນເວທີທີ່ມັນບໍ່ໄດ້ຮັບການສະຫນັບສະຫນູນ, --ພັກຜ່ອນ ໄດ້ຮັບການຍອມຮັບ, ແຕ່ຖືກລະເລີຍ.
ໃນເວທີທີ່ --ພັກຜ່ອນ ໄດ້ຮັບການຍອມຮັບທາງເລືອກ --ບໍ່ຜ່ອນຄາຍ ສາມາດໃຊ້ເພື່ອປິດການໃຊ້ງານ
ຄຸນນະສົມບັດ.
--retain-symbols-file=ຊື່ເອກະສານ
ຮັກສາ ພຽງແຕ່ ສັນຍາລັກທີ່ລະບຸໄວ້ໃນໄຟລ໌ ຊື່ເອກະສານ, ຖິ້ມຄົນອື່ນທັງຫມົດ. ຊື່ເອກະສານ
ແມ່ນພຽງແຕ່ໄຟລ໌ແປ, ມີສັນຍາລັກຫນຶ່ງຊື່ຕໍ່ແຖວ. ທາງເລືອກນີ້ແມ່ນໂດຍສະເພາະແມ່ນ
ມີປະໂຫຍດໃນສະພາບແວດລ້ອມ (ເຊັ່ນ: VxWorks) ບ່ອນທີ່ມີຕາຕະລາງສັນຍາລັກທົ່ວໂລກຂະຫນາດໃຫຍ່
ສະສົມເທື່ອລະກ້າວ, ເພື່ອຮັກສາຄວາມຊົງຈໍາໃນເວລາແລ່ນ.
--retain-symbols-file ບໍ່ ບໍ່ ຍົກເລີກສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດ, ຫຼືສັນຍາລັກທີ່ຈໍາເປັນສໍາລັບ
ການຍົກຍ້າຍ.
ທ່ານພຽງແຕ່ອາດຈະລະບຸ --retain-symbols-file ເມື່ອຢູ່ໃນເສັ້ນຄໍາສັ່ງ. ມັນ overrides -s
ແລະ -S.
-rpath=dir
ເພີ່ມໄດເລກະທໍລີໃສ່ເສັ້ນທາງຄົ້ນຫາຫ້ອງສະຫມຸດ runtime. ອັນນີ້ໃຊ້ເມື່ອເຊື່ອມຕໍ່ ELF
ປະຕິບັດກັບວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ. ທັງໝົດ -rpath ການໂຕ້ຖຽງແມ່ນ concatenated ແລະຜ່ານໄປ
ຕົວເຊື່ອມຕໍ່ເວລາແລ່ນ, ເຊິ່ງໃຊ້ພວກມັນເພື່ອຊອກຫາວັດຖຸທີ່ໃຊ້ຮ່ວມກັນໃນເວລາແລ່ນ. ໄດ້ -rpath
ທາງເລືອກຍັງຖືກນໍາໃຊ້ໃນເວລາທີ່ຊອກຫາວັດຖຸທີ່ແບ່ງປັນທີ່ຈໍາເປັນຕ້ອງໂດຍການແບ່ງປັນວັດຖຸ
ລວມຢ່າງຈະແຈ້ງໃນການເຊື່ອມຕໍ່; ເບິ່ງລາຍລະອຽດຂອງ -rpath-link ທາງເລືອກ. ຖ້າ
-rpath ບໍ່ໄດ້ຖືກນໍາໃຊ້ໃນເວລາທີ່ເຊື່ອມຕໍ່ ELF ປະຕິບັດໄດ້, ເນື້ອໃນຂອງສະພາບແວດລ້ອມ
ຕົວແປ "LD_RUN_PATH" ຈະຖືກໃຊ້ຖ້າມັນຖືກກໍານົດ.
ໄດ້ -rpath ທາງເລືອກອາດຈະຖືກນໍາໃຊ້ໃນ SunOS. ໂດຍຄ່າເລີ່ມຕົ້ນ, ໃນ SunOS, ຕົວເຊື່ອມຕໍ່ຈະ
ປະກອບເປັນເສັ້ນທາງການຊອກຫາ runtime ອອກຈາກທັງຫມົດ -L ທາງເລືອກທີ່ມັນຖືກມອບໃຫ້. ຖ້າ ກ -rpath ທາງເລືອກ
ຖືກນໍາໃຊ້, ເສັ້ນທາງການຊອກຫາ runtime ຈະໄດ້ຮັບການສ້າງຕັ້ງຂຶ້ນສະເພາະແມ່ນການນໍາໃຊ້ -rpath ທາງເລືອກ,
ບໍ່ສົນໃຈ -L ທາງເລືອກ. ນີ້ສາມາດເປັນປະໂຫຍດໃນເວລາທີ່ໃຊ້ gcc, ເຊິ່ງເພີ່ມຈໍານວນຫຼາຍ -L
ທາງເລືອກທີ່ອາດຈະຢູ່ໃນ NFS mounted ລະບົບໄຟລ໌.
ສໍາລັບຄວາມເຂົ້າກັນໄດ້ກັບຕົວເຊື່ອມຕໍ່ ELF ອື່ນໆ, ຖ້າ -R ທາງເລືອກແມ່ນປະຕິບັດຕາມໂດຍໄດເລກະທໍລີ
ຊື່, ແທນທີ່ຈະເປັນຊື່ໄຟລ໌, ມັນຖືກປະຕິບັດເປັນ -rpath ທາງເລືອກ.
-rpath-link=dir
ເມື່ອໃຊ້ ELF ຫຼື SunOS, ຫ້ອງສະໝຸດທີ່ແບ່ງປັນໜຶ່ງອາດຈະຕ້ອງການອີກບ່ອນໜຶ່ງ. ອັນນີ້ເກີດຂຶ້ນເມື່ອ
ລິ້ງ "ld -shared" ລວມມີຫ້ອງສະໝຸດທີ່ແບ່ງປັນເປັນໜຶ່ງໃນໄຟລ໌ປ້ອນຂໍ້ມູນ.
ເມື່ອຕົວເຊື່ອມຕໍ່ພົບການເພິ່ງພາອາໄສດັ່ງກ່າວໃນເວລາທີ່ເຮັດການບໍ່ໄດ້ແບ່ງປັນ, ບໍ່ມີການຍົກຍ້າຍ
ການເຊື່ອມຕໍ່, ມັນຈະພະຍາຍາມຊອກຫາຫ້ອງສະຫມຸດທີ່ແບ່ງປັນທີ່ຕ້ອງການແລະປະກອບມັນໂດຍອັດຕະໂນມັດ
ໃນການເຊື່ອມຕໍ່, ຖ້າມັນບໍ່ໄດ້ຖືກລວມຢ່າງຈະແຈ້ງ. ໃນກໍລະນີດັ່ງກ່າວ, ໄດ້ -rpath-link ທາງເລືອກ
ກໍານົດຊຸດທໍາອິດຂອງໄດເລກະທໍລີທີ່ຈະຄົ້ນຫາ. ໄດ້ -rpath-link ທາງເລືອກອາດຈະລະບຸ
ລໍາດັບຂອງຊື່ໄດເລກະທໍລີໂດຍການລະບຸບັນຊີລາຍຊື່ຂອງຊື່ທີ່ແຍກອອກໂດຍ
ຈໍ້າສອງເມັດ, ຫຼືໂດຍການປະກົດຕົວຫຼາຍຄັ້ງ.
ທາງເລືອກນີ້ຄວນຈະຖືກນໍາໃຊ້ຢ່າງລະມັດລະວັງຍ້ອນວ່າມັນ overrides ເສັ້ນທາງຄົ້ນຫາທີ່ອາດຈະມີ
ໄດ້ຮັບການລວບລວມຍາກໃນຫ້ອງສະຫມຸດຮ່ວມກັນ. ໃນກໍລະນີດັ່ງກ່າວມັນເປັນໄປໄດ້ທີ່ຈະນໍາໃຊ້
ໂດຍບໍ່ໄດ້ຕັ້ງໃຈເປັນເສັ້ນທາງຄົ້ນຫາທີ່ແຕກຕ່າງຈາກຕົວເຊື່ອມຕໍ່ runtime ຈະເຮັດ.
ຕົວເຊື່ອມຕໍ່ໃຊ້ເສັ້ນທາງຄົ້ນຫາຕໍ່ໄປນີ້ເພື່ອຊອກຫາຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນທີ່ຕ້ອງການ:
1. ໄດເລກະທໍລີໃດກໍານົດໂດຍ -rpath-link ຕົວເລືອກ
2. ໄດເລກະທໍລີໃດກໍານົດໂດຍ -rpath ທາງເລືອກ. ຄວາມແຕກຕ່າງລະຫວ່າງ -rpath ແລະ
-rpath-link ແມ່ນໄດເລກະທໍລີທີ່ລະບຸໄວ້ໂດຍ -rpath ທາງເລືອກແມ່ນລວມຢູ່ໃນ
ປະຕິບັດໄດ້ແລະຖືກນໍາໃຊ້ໃນເວລາແລ່ນ, ໃນຂະນະທີ່ -rpath-link ທາງເລືອກແມ່ນມີປະສິດທິພາບເທົ່ານັ້ນ
ໃນເວລາເຊື່ອມຕໍ່. ກຳລັງຊອກຫາ -rpath ໃນວິທີການນີ້ແມ່ນສະຫນັບສະຫນູນພຽງແຕ່ໂດຍການເຊື່ອມໂຍງພື້ນເມືອງແລະ
ຕົວເຊື່ອມຕໍ່ຂ້າມທີ່ໄດ້ຖືກຕັ້ງຄ່າດ້ວຍ --with-sysroot ທາງເລືອກ.
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-ທົ່ວໄປ
--sort-common=ຕັ້ງຊັນຂຶ້ນ
--sort-common=ລົງມາ
ທາງເລືອກນີ້ບອກ ld ການຈັດຮຽງສັນຍາລັກທົ່ວໄປໂດຍການຈັດຮຽງຈາກນ້ອຍຫາໃຫຍ່ ຫຼື
descending order ເມື່ອມັນຈັດວາງພວກມັນຢູ່ໃນພາກສ່ວນຜົນຜະລິດທີ່ເຫມາະສົມ. ສັນຍາລັກ
ການຈັດຮຽງທີ່ພິຈາລະນາແມ່ນສິບຫົກໄບຫຼືໃຫຍ່ກວ່າ, ແປດໄບ, ສີ່ໄບ, ສອງໄບ, ແລະ
one-byte. ນີ້ແມ່ນເພື່ອປ້ອງກັນຊ່ອງຫວ່າງລະຫວ່າງສັນຍາລັກເນື່ອງຈາກຂໍ້ຈໍາກັດການຈັດຕໍາແຫນ່ງ. ຖ້າບໍ່ມີ
ລຳດັບການຈັດຮຽງແມ່ນໄດ້ລະບຸໄວ້, ຈາກນັ້ນກຳນົດລຳດັບຈາກໃຫຍ່ຫານ້ອຍແມ່ນສົມມຸດ.
--sort-section=ຊື່
ໂຕເລືອກນີ້ຈະນຳໃຊ້ "SORT_BY_NAME" ກັບທຸກຮູບແບບພາກສ່ວນຂອງ wildcard ໃນຕົວເຊື່ອມຕໍ່
script
--sort-section=ຈັດຮຽງ
ໂຕເລືອກນີ້ຈະນຳໃຊ້ "SORT_BY_ALIGNMENT" ກັບທຸກຮູບແບບພາກສ່ວນສັນຍາລັກແທນໃນ
linker script.
--split-by-file[=ຂະຫນາດ]
ຄ້າຍຄືກັບ --split-by-reloc ແຕ່ສ້າງພາກສ່ວນຜົນຜະລິດໃຫມ່ສໍາລັບແຕ່ລະໄຟລ໌ປ້ອນຂໍ້ມູນໃນເວລາທີ່
ຂະຫນາດ ແມ່ນບັນລຸໄດ້. ຂະຫນາດ ຄ່າເລີ່ມຕົ້ນເປັນຂະຫນາດ 1 ຖ້າບໍ່ໃຫ້.
--split-by-reloc[=ນັບ]
ພະຍາຍາມທີ່ຈະສ້າງພາກສ່ວນພິເສດໃນໄຟລ໌ຜົນຜະລິດດັ່ງນັ້ນບໍ່ມີພາກສ່ວນຜົນຜະລິດດຽວໃນ
ໄຟລ໌ມີຫຼາຍກ່ວາ ນັບ ການຍົກຍ້າຍ. ນີ້ແມ່ນເປັນປະໂຫຍດໃນເວລາທີ່ສ້າງຂະຫນາດໃຫຍ່
ໄຟລ໌ທີ່ສາມາດຍ້າຍໄດ້ສໍາລັບການດາວໂຫຼດເຂົ້າໄປໃນແກ່ນທີ່ແທ້ຈິງທີ່ແນ່ນອນກັບວັດຖຸ COFF
ຮູບແບບໄຟລ໌; ເນື່ອງຈາກ COFF ບໍ່ສາມາດເປັນຕົວແທນຫຼາຍກວ່າ 65535 ການຍົກຍ້າຍໃນບ່ອນດຽວ
ພາກ. ຈົ່ງຈື່ໄວ້ວ່າອັນນີ້ຈະບໍ່ເຮັດວຽກກັບຮູບແບບໄຟລ໌ວັດຖຸທີ່ເຮັດບໍ່ໄດ້
ສະຫນັບສະຫນູນພາກສ່ວນທີ່ມັກ. ຕົວເຊື່ອມຕໍ່ຈະບໍ່ແບ່ງສ່ວນການປ້ອນຂໍ້ມູນແຕ່ລະອັນ
ສໍາລັບການແຈກຢາຍຄືນໃຫມ່, ສະນັ້ນຖ້າຫາກວ່າພາກສ່ວນເຂົ້າດຽວມີຫຼາຍກ່ວາ ນັບ ການຍົກຍ້າຍ
ພາກສ່ວນຜົນຜະລິດຫນຶ່ງຈະປະກອບດ້ວຍການຍົກຍ້າຍຈໍານວນຫຼາຍທີ່. ນັບ ຄ່າເລີ່ມຕົ້ນເປັນຄ່າຂອງ
32768.
--ສະຖິຕິ
ຄິດໄລ່ແລະສະແດງສະຖິຕິກ່ຽວກັບການປະຕິບັດງານຂອງຕົວເຊື່ອມຕໍ່, ເຊັ່ນ: ການປະຕິບັດ
ການນໍາໃຊ້ເວລາແລະຄວາມຊົງຈໍາ.
--sysroot=ລະບົບ
ການນໍາໃຊ້ ລະບົບ ເປັນສະຖານທີ່ຂອງ sysroot, overriding ຄ່າເລີ່ມຕົ້ນ configure-time.
ທາງເລືອກນີ້ແມ່ນສະຫນັບສະຫນູນໂດຍຕົວເຊື່ອມຕໍ່ທີ່ຖືກຕັ້ງຄ່າໂດຍໃຊ້ --with-sysroot.
-- ຮູບແບບພື້ນເມືອງ
ສໍາລັບບາງເປົ້າຫມາຍ, ຜົນຜະລິດຂອງ ld ແມ່ນແຕກຕ່າງກັນໃນບາງວິທີຈາກຜົນຜະລິດຂອງບາງ
ຕົວເຊື່ອມຕໍ່ທີ່ມີຢູ່ແລ້ວ. ສະຫຼັບນີ້ຮ້ອງຂໍ ld ໃຊ້ຮູບແບບພື້ນເມືອງແທນ.
ຕົວຢ່າງ, ໃນ SunOS, ld ລວມເອົາລາຍການທີ່ຊໍ້າກັນຢູ່ໃນຕາຕະລາງສະຕຣິງສັນຍາລັກ. ນີ້
ສາມາດຫຼຸດຜ່ອນຂະຫນາດຂອງໄຟລ໌ຜົນຜະລິດທີ່ມີຂໍ້ມູນດີບັກເຕັມທີ່ຫຼາຍກວ່າ 30
ເປີເຊັນ. ແຕ່ຫນ້າເສຍດາຍ, ໂຄງການ SunOS "dbx" ບໍ່ສາມາດອ່ານໂຄງການຜົນໄດ້ຮັບ
("gdb" ບໍ່ມີບັນຫາ). ໄດ້ -- ຮູບແບບພື້ນເມືອງ ສະຫຼັບບອກ ld ທີ່ຈະບໍ່ປະສົມ
ລາຍການຊ້ຳກັນ.
--section-start=ຊື່ພາກ=org
ຊອກຫາພາກສ່ວນໃນໄຟລ໌ຜົນຜະລິດຢູ່ທີ່ທີ່ຢູ່ຢ່າງແທ້ຈິງໃຫ້ໂດຍ org. ເຈົ້າອາດຈະໃຊ້
ຕົວເລືອກນີ້ຫຼາຍເທື່ອຕາມຄວາມຈໍາເປັນເພື່ອຊອກຫາຫຼາຍພາກສ່ວນໃນຄໍາສັ່ງ
ເສັ້ນ. org ຕ້ອງເປັນຈຳນວນທົດສະນິຍົມເລກສິບຫົກອັນດຽວ; ເພື່ອຄວາມເຂົ້າກັນໄດ້ກັບຕົວເຊື່ອມຕໍ່ອື່ນໆ,
ທ່ານອາດຈະຍົກເວັ້ນການນໍາ 0x ປົກກະຕິແລ້ວກ່ຽວຂ້ອງກັບຄ່າເລກຖານສິບຫົກ. ຫມາຍເຫດ: ມີ
ຄວນຈະບໍ່ມີຊ່ອງຫວ່າງລະຫວ່າງ ຊື່ພາກ, ເຄື່ອງໝາຍເທົ່າກັບ ("="), ແລະ org.
-Tbss=org
-Tdata=org
-Ttext=org
ຄືກັນກັບ --section-start, ມີ ".bss", ".data" ຫຼື ".text" ເປັນ ຊື່ພາກ.
-Ttext-segment=org
ເມື່ອສ້າງ ELF ທີ່ສາມາດປະຕິບັດໄດ້, ມັນຈະກໍານົດທີ່ຢູ່ຂອງ byte ທໍາອິດຂອງຂໍ້ຄວາມ
ສ່ວນແບ່ງ.
-Trodata-segment=org
ເມື່ອສ້າງ ELF ທີ່ສາມາດປະຕິບັດໄດ້ຫຼືແບ່ງປັນວັດຖຸສໍາລັບເປົ້າຫມາຍທີ່ຂໍ້ມູນທີ່ອ່ານເທົ່ານັ້ນ
ແມ່ນຢູ່ໃນພາກສ່ວນຂອງຕົນເອງແຍກຕ່າງຫາກຈາກຂໍ້ຄວາມທີ່ປະຕິບັດໄດ້, ມັນຈະກໍານົດທີ່ຢູ່ຂອງ
ໄບຕ໌ທຳອິດຂອງພາກສ່ວນຂໍ້ມູນອ່ານເທົ່ານັ້ນ.
-Tldata-segment=org
ເມື່ອສ້າງ ELF ປະຕິບັດຫຼືແບ່ງປັນວັດຖຸສໍາລັບຮູບແບບຫນ່ວຍຄວາມຈໍາຂະຫນາດກາງ x86-64, ມັນ
ຈະຕັ້ງທີ່ຢູ່ຂອງ byte ທໍາອິດຂອງພາກສ່ວນ ldata.
--unresolved-symbols=ວິທີການ
ກໍານົດວິທີການຈັດການກັບສັນຍາລັກທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂ. ມີສີ່ຄ່າທີ່ເປັນໄປໄດ້ສໍາລັບ
ວິທີການ:
ບໍ່ສົນໃຈທັງໝົດ
ຢ່າລາຍງານສັນຍາລັກທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂ.
ລາຍງານທັງໝົດ
ລາຍງານສັນຍາລັກທີ່ຍັງບໍ່ໄດ້ແກ້ໄຂທັງໝົດ. ນີ້ແມ່ນຄ່າເລີ່ມຕົ້ນ.
ignore-in-object-files
ລາຍງານສັນຍາລັກທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂທີ່ມີຢູ່ໃນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ, ແຕ່ບໍ່ສົນໃຈພວກມັນ
ຖ້າພວກເຂົາມາຈາກໄຟລ໌ວັດຖຸປົກກະຕິ.
ignore-in-shared-libs
ລາຍງານສັນຍາລັກທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂທີ່ມາຈາກໄຟລ໌ວັດຖຸປົກກະຕິ, ແຕ່ບໍ່ສົນໃຈພວກມັນຖ້າ
ພວກເຂົາມາຈາກຫ້ອງສະຫມຸດຮ່ວມກັນ. ນີ້ສາມາດເປັນປະໂຫຍດໃນເວລາສ້າງແບບເຄື່ອນໄຫວ
binary ແລະມັນເປັນທີ່ຮູ້ຈັກວ່າຫ້ອງສະຫມຸດຮ່ວມກັນທັງຫມົດທີ່ມັນຄວນຈະເປັນການອ້າງອີງ
ແມ່ນລວມຢູ່ໃນເສັ້ນຄໍາສັ່ງຂອງຕົວເຊື່ອມຕໍ່.
ພຶດຕິກໍາສໍາລັບຫ້ອງສະຫມຸດຮ່ວມກັນດ້ວຍຕົນເອງຍັງສາມາດຖືກຄວບຄຸມໂດຍ
--[no-]allow-shlib-undefined ທາງເລືອກ.
ໂດຍປົກກະຕິຕົວເຊື່ອມຕໍ່ຈະສ້າງຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດສໍາລັບແຕ່ລະສັນຍາລັກທີ່ບໍ່ໄດ້ແກ້ໄຂລາຍງານ
ແຕ່ທາງເລືອກ --warn-unsolved-ສັນຍາລັກ ສາມາດປ່ຽນອັນນີ້ເປັນຄຳເຕືອນໄດ້.
--dll-verbose
--verbose[=NUMBER]
ສະແດງໝາຍເລກເວີຊັນສຳລັບ ld ແລະລາຍຊື່ຕົວເຊື່ອມຕໍ່ຕົວເຊື່ອມຕໍ່ທີ່ຮອງຮັບ. ຈໍສະແດງຜົນ
ໄຟລ໌ໃດທີ່ປ້ອນເຂົ້າສາມາດ ແລະບໍ່ສາມາດເປີດໄດ້. ສະແດງສະຄຣິບຕົວເຊື່ອມຕໍ່ທີ່ຖືກນໍາໃຊ້ໂດຍ
ຕົວເຊື່ອມຕໍ່. ຖ້າທາງເລືອກ NUMBER argument > 1, ສະຖານະສັນຍາລັກ plugin ຈະເປັນຄືກັນ
ສະແດງ.
--version-script=version-scriptfile
ລະບຸຊື່ຂອງສະຄຣິບເວີຊັ່ນໃຫ້ກັບຕົວເຊື່ອມຕໍ່. ໂດຍທົ່ວໄປແລ້ວນີ້ແມ່ນໃຊ້ໃນເວລາທີ່
ການສ້າງຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນເພື່ອລະບຸຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບສະບັບ
ລໍາດັບຊັ້ນສໍາລັບຫ້ອງສະຫມຸດທີ່ກໍາລັງຖືກສ້າງຂື້ນ. ທາງເລືອກນີ້ພຽງແຕ່ໄດ້ຮັບການສະຫນັບສະຫນູນຢ່າງເຕັມສ່ວນໃນ ELF
ເວທີທີ່ສະຫນັບສະຫນູນຫ້ອງສະຫມຸດຮ່ວມກັນ; ເບິ່ງ ເວີຊັ່ນ. ມັນໄດ້ຮັບການສະຫນັບສະຫນູນບາງສ່ວນກ່ຽວກັບ
ແພລະຕະຟອມ PE, ເຊິ່ງສາມາດໃຊ້ສະຄຣິບເວີຊັນເພື່ອກັ່ນຕອງການເບິ່ງເຫັນສັນຍາລັກໃນການສົ່ງອອກອັດຕະໂນມັດ
ໂຫມດ: ສັນຍາລັກໃດກໍ່ໄດ້ ທ້ອງຖິ່ນ ໃນສະຄຣິບເວີຊັນຈະບໍ່ຖືກສົ່ງອອກ.
--ເຕືອນ-ທົ່ວໄປ
ເຕືອນເມື່ອສັນຍາລັກທົ່ວໄປຖືກລວມເຂົ້າກັບສັນຍາລັກທົ່ວໄປອື່ນຫຼືກັບສັນຍາລັກ
ຄໍານິຍາມ. ຕົວເຊື່ອມຕໍ່ Unix ອະນຸຍາດໃຫ້ປະຕິບັດບາງອັນນີ້ sloppy, ແຕ່ linkers ກ່ຽວກັບບາງ
ລະບົບປະຕິບັດການອື່ນໆບໍ່ໄດ້. ທາງເລືອກນີ້ຊ່ວຍໃຫ້ທ່ານສາມາດຊອກຫາບັນຫາທີ່ອາດຈະເກີດຂື້ນ
ຈາກການລວມເອົາສັນຍາລັກທົ່ວໂລກ. ແຕ່ຫນ້າເສຍດາຍ, ບາງຫ້ອງສະຫມຸດ C ໃຊ້ການປະຕິບັດນີ້, ດັ່ງນັ້ນ
ທ່ານອາດຈະໄດ້ຮັບຄໍາເຕືອນບາງຢ່າງກ່ຽວກັບສັນຍາລັກໃນຫ້ອງສະຫມຸດເຊັ່ນດຽວກັນກັບໃນໂຄງການຂອງທ່ານ.
ມີສາມປະເພດຂອງສັນຍາລັກຂອງໂລກ, ສະແດງຢູ່ທີ່ນີ້ໂດຍ C ຕົວຢ່າງ:
int i = 1;
ຄໍານິຍາມ, ເຊິ່ງໄປຢູ່ໃນພາກຂໍ້ມູນເບື້ອງຕົ້ນຂອງໄຟລ໌ຜົນຜະລິດ.
ພາຍນອກ int i;
ການອ້າງອີງທີ່ບໍ່ໄດ້ກໍານົດ, ເຊິ່ງບໍ່ໄດ້ຈັດສັນພື້ນທີ່. ຕ້ອງມີທັງ a
ຄໍານິຍາມຫຼືສັນຍາລັກທົ່ວໄປສໍາລັບຕົວແປບາງບ່ອນ.
int i;
ສັນຍາລັກທົ່ວໄປ. ຖ້າມີພຽງແຕ່ (ຫນຶ່ງຫຼືຫຼາຍກວ່າ) ສັນຍາລັກທົ່ວໄປສໍາລັບຕົວແປ,
ມັນໄປຢູ່ໃນພື້ນທີ່ຂໍ້ມູນ uninitialized ຂອງໄຟລ໌ຜົນຜະລິດ. ຕົວເຊື່ອມຕໍ່ເຂົ້າກັນ
ຫຼາຍສັນຍາລັກທົ່ວໄປສໍາລັບຕົວແປດຽວກັນເຂົ້າໄປໃນສັນຍາລັກດຽວ. ຖ້າພວກເຂົາແມ່ນ
ຂະຫນາດທີ່ແຕກຕ່າງກັນ, ມັນເລືອກເອົາຂະຫນາດທີ່ໃຫຍ່ທີ່ສຸດ. ຕົວເຊື່ອມຕໍ່ປ່ຽນເປັນສັນຍາລັກທົ່ວໄປ
ເຂົ້າໄປໃນການປະກາດ, ຖ້າມີຄໍານິຍາມຂອງຕົວແປດຽວກັນ.
ໄດ້ --ເຕືອນ-ທົ່ວໄປ ທາງເລືອກສາມາດຜະລິດຫ້າປະເພດຂອງການເຕືອນໄພ. ແຕ່ລະຄໍາເຕືອນປະກອບດ້ວຍ
ຄູ່ຂອງເສັ້ນ: ທໍາອິດອະທິບາຍສັນຍາລັກທີ່ຫາກໍ່ພົບ, ແລະທີສອງ
ອະທິບາຍສັນຍາລັກກ່ອນໜ້ານີ້ທີ່ພົບດ້ວຍຊື່ດຽວກັນ. ຫນຶ່ງຫຼືທັງສອງຂອງທັງສອງ
ສັນຍາລັກຈະເປັນສັນຍາລັກທົ່ວໄປ.
1. ການປ່ຽນສັນຍາລັກທົ່ວໄປເປັນຄໍາອ້າງອີງ, ເພາະວ່າມີຄໍານິຍາມຢູ່ແລ້ວ
ສໍາລັບສັນຍາລັກ.
( ): warning: common of ` '
overridden ໂດຍຄໍານິຍາມ
( ): ການເຕືອນໄພ: ກໍານົດຢູ່ທີ່ນີ້
2. ການປ່ຽນສັນຍາລັກທົ່ວໄປເຂົ້າໃນການອ້າງອີງ, ເນື່ອງຈາກວ່າຄໍານິຍາມຕໍ່ມາສໍາລັບ the
ສັນຍາລັກແມ່ນພົບ. ນີ້ແມ່ນຄືກັນກັບກໍລະນີທີ່ຜ່ານມາ, ຍົກເວັ້ນວ່າ
ສັນຍາລັກແມ່ນພົບໃນລໍາດັບທີ່ແຕກຕ່າງກັນ.
( ): warning: ຄໍານິຍາມຂອງ ` '
overriding ທົ່ວໄປ
( ): ການເຕືອນໄພ: ທົ່ວໄປແມ່ນຢູ່ທີ່ນີ້
3. ການລວມສັນຍາລັກທົ່ວໄປກັບສັນຍາລັກທົ່ວໄປທີ່ມີຂະຫນາດດຽວກັນກ່ອນຫນ້ານີ້.
( ): warning: multiple common
ຂອງ ` '
( ): ການເຕືອນໄພ: ທົ່ວໄປກ່ອນຫນ້ານີ້ແມ່ນຢູ່ທີ່ນີ້
4. ການລວມສັນຍາລັກທົ່ວໄປກັບສັນຍາລັກທົ່ວໄປທີ່ໃຫຍ່ກວ່າກ່ອນຫນ້ານີ້.
( ): warning: common of ` '
overridden ໂດຍທົ່ວໄປຂະຫນາດໃຫຍ່
( ): ການເຕືອນໄພ: ຂະຫນາດໃຫຍ່ທົ່ວໄປຢູ່ທີ່ນີ້
5. ການລວມສັນຍາລັກທົ່ວໄປກັບສັນຍາລັກທົ່ວໄປຂະຫນາດນ້ອຍກວ່າກ່ອນຫນ້ານີ້. ອັນນີ້ຄືກັນ
ເຊັ່ນດຽວກັບກໍລະນີທີ່ຜ່ານມາ, ຍົກເວັ້ນວ່າສັນຍາລັກແມ່ນພົບໃນທີ່ແຕກຕ່າງກັນ
order
( ): warning: common of ` '
overriding ຂະຫນາດນ້ອຍກວ່າທົ່ວໄປ
( ): ການເຕືອນໄພ: ນ້ອຍກວ່າທົ່ວໄປຢູ່ທີ່ນີ້
-- ເຕືອນຜູ້ກໍ່ສ້າງ
ເຕືອນຖ້າຜູ້ກໍ່ສ້າງທົ່ວໂລກຖືກໃຊ້. ນີ້ແມ່ນເປັນປະໂຫຍດພຽງແຕ່ສໍາລັບໄຟລ໌ວັດຖຸຈໍານວນຫນ້ອຍຫນຶ່ງ
ຮູບແບບ. ສໍາລັບຮູບແບບເຊັ່ນ COFF ຫຼື ELF, ຕົວເຊື່ອມຕໍ່ບໍ່ສາມາດກວດພົບການນໍາໃຊ້ທົ່ວໂລກ
ຜູ້ກໍ່ສ້າງ.
--warn-multiple-gp
ເຕືອນຖ້າມີຄ່າຕົວຊີ້ທົ່ວໂລກຫຼາຍຄ່າໃນໄຟລ໌ຜົນຜະລິດ. ນີ້ແມ່ນພຽງແຕ່
ມີຄວາມຫມາຍສໍາລັບໂປເຊດເຊີທີ່ແນ່ນອນ, ເຊັ່ນ Alpha. ໂດຍສະເພາະ, ບາງໂປເຊດເຊີ
ເອົາຄ່າຄົງທີ່ທີ່ມີຄ່າໃຫຍ່ຢູ່ໃນສ່ວນພິເສດ. ການລົງທະບຽນພິເສດ (ທົ່ວໂລກ
pointer) ຈຸດເຂົ້າໄປໃນພາກກາງຂອງພາກນີ້, ເພື່ອໃຫ້ຄົງທີ່ສາມາດໂຫລດໄດ້
ປະສິດທິພາບໂດຍຜ່ານຮູບແບບການລົງທະບຽນຖານທີ່ໃກ້ຄຽງ. ນັບຕັ້ງແຕ່ການຊົດເຊີຍໃນຖານ
ຮູບແບບພີ່ນ້ອງລົງທະບຽນແມ່ນມີການສ້ອມແຊມແລະຂ້ອນຂ້າງຂະຫນາດນ້ອຍ (eg, 16 bits), ນີ້ຈໍາກັດການ
ຂະຫນາດສູງສຸດຂອງສະນຸກເກີຄົງທີ່. ດັ່ງນັ້ນ, ໃນໂຄງການຂະຫນາດໃຫຍ່, ມັນມັກຈະມີຄວາມຈໍາເປັນ
ໃຊ້ຄ່າຕົວຊີ້ທົ່ວໂລກຫຼາຍອັນເພື່ອໃຫ້ສາມາດແກ້ໄຂທີ່ເປັນໄປໄດ້ທັງໝົດ
ຄົງທີ່. ຕົວເລືອກນີ້ເຮັດໃຫ້ເກີດການເຕືອນໄພທຸກຄັ້ງທີ່ກໍລະນີນີ້ເກີດຂຶ້ນ.
-- ເຕືອນຄັ້ງດຽວ
ເຕືອນພຽງແຕ່ຄັ້ງດຽວສໍາລັບແຕ່ລະສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດ, ແທນທີ່ຈະກ່ວາຫນຶ່ງຄັ້ງຕໍ່ໂມດູນທີ່ຫມາຍເຖິງ
ມັນ.
--warn-section-align
ເຕືອນຖ້າທີ່ຢູ່ຂອງພາກສ່ວນຜົນຜະລິດຖືກປ່ຽນແປງເນື່ອງຈາກການຈັດຕໍາແຫນ່ງ. ໂດຍປົກກະຕິ,
ການຈັດວາງຈະຖືກກໍານົດໂດຍພາກສ່ວນປ້ອນຂໍ້ມູນ. ທີ່ຢູ່ຈະຖືກປ່ຽນພຽງແຕ່ຖ້າມັນ
ບໍ່ໄດ້ລະບຸຢ່າງຊັດເຈນ; ນັ້ນແມ່ນ, ຖ້າຄໍາສັ່ງ "SECTIONS" ບໍ່ໄດ້ກໍານົດການເລີ່ມຕົ້ນ
ທີ່ຢູ່ສໍາລັບພາກສ່ວນ.
--warn-shared-textrel
ເຕືອນຖ້າຕົວເຊື່ອມຕໍ່ເພີ່ມ DT_TEXTREL ໃສ່ວັດຖຸທີ່ໃຊ້ຮ່ວມກັນ.
--warn-alternate-em
ເຕືອນຖ້າວັດຖຸມີລະຫັດເຄື່ອງ ELF ສຳຮອງ.
--warn-unsolved-ສັນຍາລັກ
ຖ້າຕົວເຊື່ອມຕໍ່ຈະລາຍງານສັນຍາລັກທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂ (ເບິ່ງທາງເລືອກ
--unsolved-ສັນຍາລັກ) ມັນປົກກະຕິຈະສ້າງຄວາມຜິດພາດ. ທາງເລືອກນີ້ເຮັດໃຫ້ມັນ
ສ້າງການແຈ້ງເຕືອນແທນ.
--error-unresolved-ສັນຍາລັກ
ນີ້ຈະຟື້ນຟູພຶດຕິກໍາເລີ່ມຕົ້ນຂອງຕົວເຊື່ອມຕໍ່ໃນການສ້າງຄວາມຜິດພາດໃນເວລາທີ່ມັນກໍາລັງລາຍງານ
ສັນຍາລັກທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂ.
--ຮວບຮວມທັງໝົດ
ສໍາລັບການເກັບຮັກສາໄວ້ແຕ່ລະຄົນທີ່ກ່າວມາໃນບັນຊີຄໍາສັ່ງຫຼັງຈາກ --ຮວບຮວມທັງໝົດ ທາງເລືອກ,
ລວມທຸກໄຟລ໌ວັດຖຸຢູ່ໃນບ່ອນເກັບມ້ຽນໃນການເຊື່ອມຕໍ່, ແທນທີ່ຈະຊອກຫາ
ເກັບໄວ້ໃນແຟ້ມວັດຖຸທີ່ຕ້ອງການ. ປົກກະຕິອັນນີ້ຖືກໃຊ້ເພື່ອປ່ຽນໄຟລ໌ແຟ້ມຈັດເກັບ
ເຂົ້າໄປໃນຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນ, ບັງຄັບໃຫ້ທຸກໆວັດຖຸຖືກລວມເຂົ້າໃນການແບ່ງປັນຜົນໄດ້ຮັບ
ຫ້ອງສະໝຸດ. ຕົວເລືອກນີ້ອາດຈະຖືກນໍາໃຊ້ຫຼາຍກວ່າຫນຶ່ງຄັ້ງ.
ສອງບັນທຶກເມື່ອໃຊ້ຕົວເລືອກນີ້ຈາກ gcc: ທໍາອິດ, gcc ບໍ່ຮູ້ກ່ຽວກັບທາງເລືອກນີ້,
ດັ່ງນັ້ນທ່ານຕ້ອງໃຊ້ -Wl,-ທັງໝົດ-ຮວບຮວມ. ອັນທີສອງ, ຢ່າລືມໃຊ້
-Wl,-no-whole-archive ຫຼັງຈາກບັນຊີລາຍການເກັບຮັກສາຂອງທ່ານ, ເນື່ອງຈາກວ່າ gcc ຈະເພີ່ມລາຍການຂອງຕົນເອງ
ຂອງການເກັບຮັກສາໄວ້ໃນການເຊື່ອມຕໍ່ຂອງທ່ານແລະທ່ານອາດຈະບໍ່ຢາກໃຫ້ທຸງນີ້ມີຜົນກະທົບເຫຼົ່ານັ້ນເຊັ່ນດຽວກັນ.
--wrap=ສັນຍາລັກ
ໃຊ້ຟັງຊັນ wrapper ສໍາລັບ ສັນຍາລັກ. ການອ້າງອິງທີ່ບໍ່ໄດ້ກໍານົດໃດໆກ່ຽວກັບ ສັນຍາລັກ ຈະຖືກແກ້ໄຂ
ເຖິງ "__wrap_ສັນຍາລັກ". ການອ້າງອິງທີ່ບໍ່ໄດ້ກໍານົດໃດໆກັບ "__real_ສັນຍາລັກ" ຈະໄດ້ຮັບການແກ້ໄຂເພື່ອ
ສັນຍາລັກ.
ນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອສະຫນອງ wrapper ສໍາລັບການເຮັດວຽກຂອງລະບົບ. ຟັງຊັນ wrapper
ຄວນເອີ້ນວ່າ "__wrap_ສັນຍາລັກ". ຖ້າມັນຕ້ອງການໂທຫາຫນ້າທີ່ລະບົບ, ມັນຄວນຈະ
ໂທຫາ "__ຈິງ_ສັນຍາລັກ".
ນີ້ແມ່ນຕົວຢ່າງເລັກນ້ອຍ:
ໂມຄະ *
__wrap_malloc (size_t c)
{
printf ("malloc ເອີ້ນດ້ວຍ %zu\n", c);
ກັບຄືນ __real_malloc (c);
}
ຖ້າທ່ານເຊື່ອມຕໍ່ລະຫັດອື່ນກັບໄຟລ໌ນີ້ໂດຍໃຊ້ --ຫໍ່ ສູນການຄ້າ, ຫຼັງຈາກນັ້ນທັງຫມົດໂທຫາ "malloc"
ຈະເອີ້ນຟັງຊັນ "__wrap_malloc" ແທນ. ການໂທຫາ "__real_malloc" ໃນ
"__wrap_malloc" ຈະເອີ້ນຟັງຊັນ "malloc" ທີ່ແທ້ຈິງ.
ທ່ານອາດຈະຕ້ອງການໃຫ້ຟັງຊັນ "__real_malloc" ເຊັ່ນດຽວກັນ, ດັ່ງນັ້ນການເຊື່ອມຕໍ່ທີ່ບໍ່ມີ
--ຫໍ່ ທາງເລືອກຈະສໍາເລັດ. ຖ້າທ່ານເຮັດແນວນີ້, ທ່ານບໍ່ຄວນໃສ່ຄໍານິຍາມຂອງ
"__real_malloc" ໃນໄຟລ໌ດຽວກັນກັບ "__wrap_malloc"; ຖ້າເຈົ້າເຮັດ, ຜູ້ປະກອບອາດຈະ
ແກ້ໄຂການໂທກ່ອນທີ່ຜູ້ເຊື່ອມຕໍ່ມີໂອກາດທີ່ຈະຫໍ່ມັນກັບ "malloc".
--eh-frame-hdr
ຮ້ອງຂໍການສ້າງພາກສ່ວນ ".eh_frame_hdr" ແລະສ່ວນຫົວຂອງ ELF "PT_GNU_EH_FRAME".
--no-ld-generated-unwind-info
ຮ້ອງຂໍການສ້າງ ".eh_frame" unwind ຂໍ້ມູນສໍາລັບ linker ສ້າງພາກສ່ວນລະຫັດເຊັ່ນ
PLT. ຕົວເລືອກນີ້ແມ່ນຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນຖ້າຕົວເຊື່ອມຕໍ່ທີ່ສ້າງຂໍ້ມູນ unwind ສະຫນັບສະຫນູນ.
--enable-new-dtags
--disable-new-dtags
ຕົວເຊື່ອມຕໍ່ນີ້ສາມາດສ້າງແທໍກແບບເຄື່ອນໄຫວໃຫມ່ໃນ ELF. ແຕ່ລະບົບ ELF ເກົ່າອາດຈະບໍ່
ເຂົ້າໃຈເຂົາເຈົ້າ. ຖ້າທ່ານລະບຸ --enable-new-dtags, tags ແບບເຄື່ອນໄຫວໃຫມ່ຈະເປັນ
ສ້າງຕາມຄວາມຕ້ອງການ ແລະແທັກແບບເຄື່ອນໄຫວທີ່ເກົ່າກວ່າຈະຖືກຍົກເລີກ. ຖ້າທ່ານລະບຸ
--disable-new-dtags, ບໍ່ມີແທັກແບບເຄື່ອນໄຫວໃຫມ່ຈະຖືກສ້າງຂຶ້ນ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ໄດນາມິກໃຫມ່
tags ບໍ່ໄດ້ສ້າງ. ໃຫ້ສັງເກດວ່າທາງເລືອກເຫຼົ່ານັ້ນມີພຽງແຕ່ສໍາລັບລະບົບ ELF ເທົ່ານັ້ນ.
--hash-size=ຈໍານວນ
ກໍານົດຂະຫນາດເລີ່ມຕົ້ນຂອງຕາຕະລາງ hash ຂອງ linker ເປັນຕົວເລກຕົ້ນຕໍຢູ່ໃກ້ກັບ ຈໍານວນ.
ການເພີ່ມມູນຄ່ານີ້ສາມາດຫຼຸດຜ່ອນໄລຍະເວລາທີ່ມັນໃຊ້ຕົວເຊື່ອມຕໍ່ເພື່ອປະຕິບັດຂອງມັນ
ວຽກງານ, ໃນຄ່າໃຊ້ຈ່າຍຂອງການເພີ່ມຄວາມຕ້ອງການຄວາມຊົງຈໍາຂອງ linker ໄດ້. ເຊັ່ນດຽວກັນ
ການຫຼຸດຜ່ອນມູນຄ່ານີ້ສາມາດຫຼຸດຜ່ອນຄວາມຕ້ອງການຫນ່ວຍຄວາມຈໍາໃນຄ່າໃຊ້ຈ່າຍຂອງຄວາມໄວ.
--hash-style=ແບບ
ກໍານົດປະເພດຂອງຕາຕະລາງ hash ຂອງ linker(s). ແບບ ສາມາດເປັນ "sysv" ສໍາລັບ ELF ຄລາສສິກ
ສ່ວນ ".hash", "gnu" ສໍາລັບຮູບແບບໃຫມ່ຂອງ GNU ".gnu.hash" ຫຼື "ທັງສອງ" ສໍາລັບທັງສອງ
ELF ຄລາສສິກ ".hash" ແລະຮູບແບບໃຫມ່ GNU ".gnu.hash" ຕາຕະລາງ hash. ຄ່າເລີ່ມຕົ້ນແມ່ນ "sysv".
--compress-debug-sections=ບໍ່ມີ
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
ໃນແພລດຟອມ ELF, ທາງເລືອກເຫຼົ່ານີ້ຄວບຄຸມວິທີທີ່ DWARF debug ສ່ວນຖືກບີບອັດໂດຍໃຊ້
zlib. --compress-debug-sections=ບໍ່ມີ ບໍ່ໄດ້ບີບອັດພາກສ່ວນດີບັກ DWARF.
--compress-debug-sections=zlib-gnu ບີບອັດພາກສ່ວນດີບັກ DWARF ແລະປ່ຽນຊື່ດີບັກ
ຊື່ພາກທີ່ຈະເລີ່ມຕົ້ນດ້ວຍ .zdebug ແທນທີ່ .ດີບັກ. --compress-debug-sections=zlib
ແລະ --compress-debug-sections=zlib-gabi ບີບອັດພາກສ່ວນດີບັກ DWARF ດ້ວຍ
SHF_COMPRESSED ຈາກ ELF ABI. ພຶດຕິກໍາໃນຕອນຕົ້ນແຕກຕ່າງກັນຂຶ້ນກັບການ
ເປົ້າໝາຍທີ່ກ່ຽວຂ້ອງ ແລະຕົວເລືອກການຕັ້ງຄ່າທີ່ໃຊ້ໃນການສ້າງລະບົບຕ່ອງໂສ້ເຄື່ອງມື. ຄ່າເລີ່ມຕົ້ນ
ສາມາດຖືກກໍານົດໂດຍການກວດສອບຜົນໄດ້ຮັບຈາກຕົວເຊື່ອມຕໍ່ - ຊ່ວຍ ທາງເລືອກ.
--reduce-memory-overheads
ທາງເລືອກນີ້ຫຼຸດຜ່ອນຄວາມຕ້ອງການຫນ່ວຍຄວາມຈໍາໃນ ld runtime, ໃນຄ່າໃຊ້ຈ່າຍຂອງການເຊື່ອມຕໍ່
ຄວາມໄວ. ອັນນີ້ຖືກແນະນຳເພື່ອເລືອກສູດການຄິດໄລ່ O(n^2) ເກົ່າສຳລັບໄຟລ໌ແຜນທີ່ລິ້ງ
ການຜະລິດ, ແທນທີ່ຈະເປັນ O(n) algorithm ໃຫມ່ທີ່ນໍາໃຊ້ປະມານ 40% ຫນ່ວຍຄວາມຈໍາເພີ່ມເຕີມສໍາລັບ
ການເກັບຮັກສາສັນຍາລັກ.
ຜົນກະທົບອີກອັນຫນຶ່ງຂອງສະວິດແມ່ນກໍານົດຂະຫນາດຕາຕະລາງ hash ເລີ່ມຕົ້ນເປັນ 1021, ເຊິ່ງ
ອີກເທື່ອຫນຶ່ງຊ່ວຍປະຢັດຫນ່ວຍຄວາມຈໍາໃນຄ່າໃຊ້ຈ່າຍຂອງ lengthening ເວລາດໍາເນີນການຂອງຕົວເຊື່ອມຕໍ່. ນີ້ບໍ່ໄດ້ເຮັດ
ຢ່າງໃດກໍຕາມຖ້າຫາກວ່າ --hash-size ສະຫຼັບໄດ້ຖືກນໍາໃຊ້.
ໄດ້ --reduce-memory-overheads ສະຫຼັບອາດຈະຖືກໃຊ້ເພື່ອເປີດໃຊ້ງານການຄ້າອື່ນໆໃນ
ຮຸ່ນໃນອະນາຄົດຂອງຕົວເຊື່ອມຕໍ່.
--build-id
--build-id=ແບບ
ຮ້ອງຂໍໃຫ້ມີການສ້າງ ".note.gnu.build-id" ພາກສ່ວນບັນທຶກ ELF ຫຼື ".buildid" COFF
ພາກ. ເນື້ອໃນຂອງບັນທຶກເປັນບັນທຶກທີ່ເປັນເອກະລັກກໍານົດໄຟລ໌ທີ່ເຊື່ອມຕໍ່ນີ້.
ແບບ ສາມາດເປັນ "uuid" ເພື່ອໃຊ້ 128 bits Random, "sha1" ເພື່ອໃຊ້ 160-bit SHA1 hash ໃນ
ພາກສ່ວນມາດຕະຖານຂອງເນື້ອໃນຜົນຜະລິດ, "md5" ເພື່ອນໍາໃຊ້ 128-bit MD5 hash ໃນ
ພາກສ່ວນມາດຕະຖານຂອງເນື້ອໃນຜົນຜະລິດ, ຫຼື "0xhexstring" ເພື່ອໃຊ້ສາຍບິດທີ່ເລືອກ
ລະບຸເປັນຕົວເລກຄູ່ຂອງຕົວເລກເລກຖານສິບຫົກ ("-" ແລະ ":" ຕົວອັກສອນລະຫວ່າງ
ຄູ່ຕົວເລກຖືກລະເລີຍ). ຖ້າ ແບບ ຖືກລະເວັ້ນ, "sha1" ຖືກໃຊ້.
ຄໍເຕົ້າໄຂ່ທີ່ "md5" ແລະ "sha1" ຜະລິດຕົວລະບຸທີ່ສະເຫມີຄືກັນໃນ an
ໄຟລ໌ຜົນຜະລິດທີ່ຄ້າຍຄືກັນ, ແຕ່ວ່າຈະເປັນເອກະລັກໃນບັນດາໄຟລ໌ຜົນຜະລິດທັງຫມົດທີ່ບໍ່ຄືກັນ. ມັນແມ່ນ
ບໍ່ມີຈຸດປະສົງທີ່ຈະປຽບທຽບເປັນ checksum ສໍາລັບເນື້ອໃນຂອງໄຟລ໌. ໄຟລ໌ທີ່ເຊື່ອມໂຍງອາດຈະ
ເຄື່ອງມືອື່ນຖືກປ່ຽນແປງພາຍຫຼັງ, ແຕ່ build ID ບິດສະຕຣິງທີ່ລະບຸຕົ້ນສະບັບ
ໄຟລ໌ທີ່ເຊື່ອມຕໍ່ບໍ່ປ່ຽນແປງ.
ຜ່ານ "ບໍ່" ສໍາລັບ ແບບ ປິດການໃຊ້ງານການຕັ້ງຄ່າຈາກຕົວເລືອກ "--build-id" ໃດໆກໍຕາມກ່ອນໜ້ານີ້
ເສັ້ນຄໍາສັ່ງ.
ຕົວເຊື່ອມຕໍ່ i386 PE ສະຫນັບສະຫນູນ - ແບ່ງປັນ ທາງເລືອກ, ເຊິ່ງເຮັດໃຫ້ຜົນຜະລິດເປັນ
ຫໍສະຫມຸດເຊື່ອມຕໍ່ແບບໄດນາມິກ (DLL) ແທນທີ່ຈະເປັນການປະຕິບັດປົກກະຕິ. ທ່ານຄວນຕັ້ງຊື່
ຜົນຜະລິດ "*.dll" ເມື່ອທ່ານໃຊ້ຕົວເລືອກນີ້. ນອກຈາກນັ້ນ, ຕົວເຊື່ອມຕໍ່ສະຫນັບສະຫນູນຢ່າງເຕັມສ່ວນ
ໄຟລ໌ "*.def" ມາດຕະຖານ, ເຊິ່ງອາດຈະຖືກລະບຸໄວ້ໃນເສັ້ນຄໍາສັ່ງຂອງຕົວເຊື່ອມຕໍ່ເຊັ່ນວັດຖຸ
file (ໃນຄວາມເປັນຈິງ, ມັນຄວນຈະກ່ອນການເກັບຮັກສາມັນສົ່ງອອກສັນຍາລັກຈາກ, ເພື່ອຮັບປະກັນວ່າພວກເຂົາເຈົ້າໄດ້ຮັບ
ເຊື່ອມຕໍ່ໃນ, ຄືກັນກັບໄຟລ໌ວັດຖຸປົກກະຕິ).
ນອກເຫນືອໄປຈາກທາງເລືອກທົ່ວໄປສໍາລັບເປົ້າຫມາຍທັງຫມົດ, ຕົວເຊື່ອມຕໍ່ i386 PE ສະຫນັບສະຫນູນເພີ່ມເຕີມ
ຕົວເລືອກເສັ້ນຄໍາສັ່ງທີ່ສະເພາະກັບເປົ້າຫມາຍ i386 PE. ຕົວເລືອກທີ່ເອົາຄ່າ
ອາດຈະຖືກແຍກອອກຈາກຄຸນຄ່າຂອງພວກມັນໂດຍຊ່ອງຫວ່າງ ຫຼືເຄື່ອງໝາຍເທົ່າກັບ.
--add-stdcall-alias
ຖ້າໃຫ້, ສັນຍາລັກທີ່ມີສ່ວນທ້າຍ stdcall (@nn) ຈະຖືກສົ່ງອອກຕາມທີ່ເປັນແລະຍັງມີ
ສ່ວນທ້າຍຖືກຖອດອອກ. [ຕົວເລືອກນີ້ແມ່ນສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--base-file ເອກະສານ
ການນໍາໃຊ້ ເອກະສານ ເປັນຊື່ຂອງໄຟລ໌ທີ່ຈະບັນທຶກທີ່ຢູ່ພື້ນຖານຂອງທັງຫມົດ
ການຍົກຍ້າຍທີ່ຈໍາເປັນສໍາລັບການສ້າງ DLLs ກັບ dlltool. [ນີ້ແມ່ນ i386 PE ສະເພາະ
ທາງເລືອກ]
--dll
ສ້າງ DLL ແທນທີ່ຈະເປັນການປະຕິບັດປົກກະຕິ. ເຈົ້າອາດຈະໃຊ້ເຊັ່ນກັນ - ແບ່ງປັນ ຫຼືລະບຸ ກ
"LIBRARY" ໃນໄຟລ໌ ".def" ທີ່ໃຫ້. [ທາງເລືອກນີ້ແມ່ນສະເພາະກັບ i386 PE ເປົ້າຫມາຍ
ທ່າເຮືອເຊື່ອມຕໍ່]
--enable-long-section-names
--disable-long-section-names
ຕົວແປ PE ຂອງຮູບແບບວັດຖຸ COFF ເພີ່ມການຂະຫຍາຍທີ່ອະນຸຍາດໃຫ້ນໍາໃຊ້
ຊື່ພາກສ່ວນຍາວກວ່າແປດຕົວອັກສອນ, ຂີດຈໍາກັດປົກກະຕິສໍາລັບ COFF. ໂດຍຄ່າເລີ່ມຕົ້ນ,
ຊື່ເຫຼົ່ານີ້ຖືກອະນຸຍາດໃຫ້ຢູ່ໃນໄຟລ໌ວັດຖຸເທົ່ານັ້ນ, ຍ້ອນວ່າຮູບພາບທີ່ສາມາດປະຕິບັດໄດ້ທີ່ເຊື່ອມໂຍງຢ່າງສົມບູນແບບບໍ່ມີ
ປະຕິບັດຕາຕະລາງ COFF string ທີ່ຕ້ອງການເພື່ອສະຫນັບສະຫນູນຊື່ທີ່ຍາວກວ່າ. ໃນຖານະເປັນສ່ວນຂະຫຍາຍ GNU,
ມັນເປັນໄປໄດ້ທີ່ຈະອະນຸຍາດໃຫ້ນໍາໃຊ້ໃນຮູບພາບທີ່ປະຕິບັດໄດ້ເຊັ່ນດຽວກັນ, ຫຼືເພື່ອ (ອາດຈະເປັນ
pointlessly!) ບໍ່ອະນຸຍາດໃຫ້ມັນຢູ່ໃນໄຟລ໌ວັດຖຸ, ໂດຍໃຊ້ສອງທາງເລືອກນີ້. ປະຕິບັດໄດ້
ຮູບພາບທີ່ຜະລິດດ້ວຍຊື່ພາກສ່ວນຍາວເຫຼົ່ານີ້ແມ່ນເລັກນ້ອຍບໍ່ໄດ້ມາດຕະຖານ, ປະຕິບັດເປັນ
ພວກເຂົາເຮັດຕາຕະລາງ string, ແລະອາດຈະສ້າງຜົນຜະລິດທີ່ສັບສົນເມື່ອກວດເບິ່ງກັບທີ່ບໍ່ແມ່ນ GNU
PE-aware tools, ເຊັ່ນ viewers ໄຟລ໌ແລະ dumpers. ຢ່າງໃດກໍຕາມ, GDB ອີງໃສ່ການນໍາໃຊ້ຂອງ
ຊື່ພາກສ່ວນຍາວ PE ເພື່ອຊອກຫາພາກສ່ວນຂໍ້ມູນດີບັກ Dwarf-2 ໃນການປະຕິບັດໄດ້
ຮູບພາບໃນເວລາແລ່ນ, ແລະດັ່ງນັ້ນຖ້າຫາກວ່າທາງເລືອກທີ່ບໍ່ໄດ້ລະບຸໄວ້ໃນບັນຊີຄໍາສັ່ງ, ld ຈະ
ເປີດໃຊ້ງານຊື່ພາກສ່ວນຍາວ, overriding ຄ່າເລີ່ມຕົ້ນແລະພຶດຕິກໍາທີ່ຖືກຕ້ອງທາງດ້ານເຕັກນິກ,
ໃນເວລາທີ່ມັນພົບເຫັນຂອງຂໍ້ມູນ debug ໃນຂະນະທີ່ເຊື່ອມຕໍ່ຮູບພາບທີ່ປະຕິບັດໄດ້ແລະ
ບໍ່ລອກເອົາສັນຍາລັກ. [ຕົວເລືອກນີ້ແມ່ນຖືກຕ້ອງສໍາລັບທຸກພອດເປົ້າຫມາຍ PE ຂອງຕົວເຊື່ອມຕໍ່]
--enable-stdcall-fixup
--disable-stdcall-fixup
ຖ້າການເຊື່ອມຕໍ່ພົບສັນຍາລັກທີ່ມັນບໍ່ສາມາດແກ້ໄຂໄດ້, ມັນຈະພະຍາຍາມເຮັດ "fuzzy
linking" ໂດຍຊອກຫາສັນຍາລັກທີ່ກໍານົດອື່ນທີ່ແຕກຕ່າງພຽງແຕ່ໃນຮູບແບບຂອງ
ຊື່ສັນຍາລັກ (cdecl vs stdcall) ແລະຈະແກ້ໄຂສັນຍາລັກນັ້ນໂດຍການເຊື່ອມຕໍ່ກັບການຈັບຄູ່.
ຕົວຢ່າງ, ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດ "_foo" ອາດຈະເຊື່ອມຕໍ່ກັບຟັງຊັນ "_foo@12", ຫຼື.
ສັນຍາລັກທີ່ບໍ່ໄດ້ກໍານົດ "_bar@16" ອາດຈະເຊື່ອມຕໍ່ກັບຟັງຊັນ "_bar". ໃນເວລາທີ່
linker ເຮັດສິ່ງນີ້, ມັນພິມຄໍາເຕືອນ, ເນື່ອງຈາກວ່າມັນປົກກະຕິແລ້ວມັນຄວນຈະລົ້ມເຫລວໃນການເຊື່ອມຕໍ່,
ແຕ່ບາງຄັ້ງການນໍາເຂົ້າຫ້ອງສະຫມຸດທີ່ສ້າງຂຶ້ນຈາກ dlls ພາກສ່ວນທີສາມອາດຈະຕ້ອງການຄຸນນະສົມບັດນີ້
ສາມາດໃຊ້ໄດ້. ຖ້າທ່ານລະບຸ --enable-stdcall-fixup, ຄຸນນະສົມບັດນີ້ຖືກເປີດໃຊ້ຢ່າງເຕັມສ່ວນ
ແລະຄໍາເຕືອນບໍ່ໄດ້ພິມອອກ. ຖ້າທ່ານລະບຸ --disable-stdcall-fixup, ຄຸນນະສົມບັດນີ້ແມ່ນ
ຄົນພິການແລະຄວາມບໍ່ກົງກັນດັ່ງກ່າວຖືວ່າເປັນຄວາມຜິດພາດ. [ທາງເລືອກນີ້ແມ່ນສະເພາະ
ທ່າເຮືອເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--ເຄື່ອງໝາຍຂັ້ນເທິງ
--no-leading-underscore
ສໍາລັບເປົ້າຫມາຍຫຼາຍທີ່ສຸດຄໍານໍາຫນ້າສັນຍາລັກໃນຕອນຕົ້ນແມ່ນເປັນ underscore ແລະກໍານົດໃນເປົ້າຫມາຍຂອງ
ລາຍລະອຽດ. ໂດຍທາງເລືອກນີ້, ມັນເປັນໄປໄດ້ທີ່ຈະປິດການໃຊ້ງານ / ເປີດໃຊ້ເຄື່ອງຫມາຍຂີດກ້ອງເລີ່ມຕົ້ນ
ສັນຍາລັກຄໍານໍາຫນ້າ.
--ສົ່ງອອກ-ທັງໝົດ-ສັນຍາລັກ
ຖ້າໃຫ້, ສັນຍາລັກທົ່ວໂລກໃນວັດຖຸທີ່ໃຊ້ໃນການສ້າງ DLL ຈະຖືກສົ່ງອອກໂດຍ
DLL. ຈື່ໄວ້ວ່ານີ້ແມ່ນຄ່າເລີ່ມຕົ້ນ ຖ້າບໍ່ດັ່ງນັ້ນຈະບໍ່ມີການສົ່ງອອກໃດໆ
ສັນຍາລັກ. ເມື່ອສັນຍາລັກຖືກສົ່ງອອກຢ່າງຈະແຈ້ງຜ່ານໄຟລ໌ DEF ຫຼືສົ່ງອອກ implicitly
ຜ່ານຄຸນສົມບັດຂອງຟັງຊັນ, ຄ່າເລີ່ມຕົ້ນແມ່ນຈະບໍ່ສົ່ງອອກອັນອື່ນເວັ້ນເສຍແຕ່ທາງເລືອກນີ້
ແມ່ນໃຫ້. ໃຫ້ສັງເກດວ່າສັນຍາລັກ "DllMain@12", "DllEntryPoint@0",
"DllMainCRTStartup@12", ແລະ "impure_ptr" ຈະບໍ່ຖືກສົ່ງອອກໂດຍອັດຕະໂນມັດ. ນອກຈາກນີ້,
ສັນຍາລັກທີ່ນໍາເຂົ້າມາຈາກ DLLs ອື່ນໆຈະບໍ່ໄດ້ຮັບການສົ່ງອອກຄືນໃຫມ່, ແລະຈະບໍ່ມີສັນຍາລັກລະບຸ
ຮູບແບບພາຍໃນຂອງ DLL ເຊັ່ນທີ່ເລີ່ມຕົ້ນດ້ວຍ "_head_" ຫຼືລົງທ້າຍດ້ວຍ
"_iname". ນອກຈາກນັ້ນ, ບໍ່ມີສັນຍາລັກຈາກ "libgcc", "libstd++", "libmingw32", ຫຼື
"crtX.o" ຈະຖືກສົ່ງອອກ. ສັນຍາລັກທີ່ມີຊື່ເລີ່ມຕົ້ນດ້ວຍ "__rtti_" ຫຼື "__builtin_"
ຈະບໍ່ຖືກສົ່ງອອກ, ເພື່ອຊ່ວຍໃຫ້ມີ C++ DLLs. ສຸດທ້າຍ, ມີບັນຊີລາຍຊື່ຢ່າງກວ້າງຂວາງຂອງ
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", ແລະ "ສະພາບແວດລ້ອມ". [ທາງເລືອກນີ້ແມ່ນສະເພາະກັບ i386 PE ເປົ້າຫມາຍ
ທ່າເຮືອເຊື່ອມຕໍ່]
--exclude-ສັນຍາລັກ ສັນຍາລັກ,ສັນຍາລັກ...
ລະບຸລາຍຊື່ຂອງສັນຍາລັກທີ່ບໍ່ຄວນຈະຖືກສົ່ງອອກໂດຍອັດຕະໂນມັດ. ສັນຍາລັກ
ຊື່ອາດຈະຖືກຈຳກັດດ້ວຍເຄື່ອງໝາຍຈຸດ ຫຼືຈໍ້າສອງເມັດ. [ຕົວເລືອກນີ້ແມ່ນສະເພາະກັບ i386 PE
ພອດເປົ້າຫມາຍຂອງຕົວເຊື່ອມຕໍ່]
--exclude-all-symbols
ລະບຸວ່າບໍ່ມີສັນຍາລັກຄວນຖືກສົ່ງອອກໂດຍອັດຕະໂນມັດ. [ທາງເລືອກນີ້ແມ່ນສະເພາະ
ທ່າເຮືອເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--ການຈັດຮຽງໄຟລ໌
ລະບຸການຈັດຮຽງໄຟລ໌. ພາກສ່ວນຕ່າງໆໃນໄຟລ໌ຈະເລີ່ມຕົ້ນຢູ່ທີ່ການຊົດເຊີຍໄຟລ໌ສະເໝີ
ຊຶ່ງເປັນຕົວຄູນຂອງຕົວເລກນີ້. ນີ້ຄ່າເລີ່ມຕົ້ນເປັນ 512. [ຕົວເລືອກນີ້ແມ່ນສະເພາະ
ກັບພອດເປົ້າຫມາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--heap reserve
--heap reserve,ຄໍາຫມັ້ນສັນຍາ
ລະບຸຈໍານວນຂອງ bytes ຂອງຫນ່ວຍຄວາມຈໍາທີ່ຈະສະຫງວນ (ແລະທາງເລືອກຄໍາຫມັ້ນສັນຍາ) ທີ່ຈະນໍາໃຊ້ເປັນ
heap ສໍາລັບໂຄງການນີ້. ຄ່າເລີ່ມຕົ້ນແມ່ນສະຫງວນໄວ້ 1MB, 4K ຫມັ້ນສັນຍາ. [ທາງເລືອກນີ້ແມ່ນ
ສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--ຮູບ-ຖານ ມູນຄ່າ
ການນໍາໃຊ້ ມູນຄ່າ ເປັນທີ່ຢູ່ພື້ນຖານຂອງໂຄງການຫຼື dll ຂອງທ່ານ. ນີ້ແມ່ນຄວາມຊົງຈໍາຕ່ໍາສຸດ
ສະຖານທີ່ທີ່ຈະຖືກນໍາໃຊ້ໃນເວລາທີ່ໂຄງການຫຼື dll ຂອງທ່ານຖືກໂຫລດ. ເພື່ອຫຼຸດຜ່ອນຄວາມຕ້ອງການ
ການຍົກຍ້າຍແລະປັບປຸງການປະຕິບັດຂອງ dlls ຂອງທ່ານ, ແຕ່ລະຄົນຄວນມີທີ່ຢູ່ພື້ນຖານທີ່ເປັນເອກະລັກ
ແລະບໍ່ທັບຊ້ອນ dll ອື່ນໆ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 0x400000 ສໍາລັບການປະຕິບັດ, ແລະ
0x10000000 ສໍາລັບ dlls. [ທາງເລືອກນີ້ແມ່ນສະເພາະກັບ i386 PE ເປົ້າຫມາຍພອດຂອງ
ຕົວເຊື່ອມຕໍ່]
--ຂ້າ
ຖ້າໃຫ້, stdcall ຕໍ່ທ້າຍ (@nn) ຈະຖືກລອກອອກຈາກສັນຍາລັກກ່ອນທີ່ມັນຈະມີ
ສົ່ງອອກ. [ຕົວເລືອກນີ້ແມ່ນສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--large-address-aware
ຖ້າໃຫ້, ບິດທີ່ເຫມາະສົມໃນພາກສະຫນາມ "ລັກສະນະ" ຂອງຫົວ COFF ຖືກກໍານົດ
ເພື່ອຊີ້ບອກວ່າຕົວປະຕິບັດການນີ້ຮອງຮັບທີ່ຢູ່ virtual ຫຼາຍກວ່າ 2 gigabyte.
ອັນນີ້ຄວນໃຊ້ຮ່ວມກັບ /3GB ຫຼື /USERVA=ມູນຄ່າ megabytes ສະຫຼັບໃນ
ພາກສ່ວນ "[ລະບົບປະຕິບັດການ]" ຂອງ BOOT.INI. ຖ້າບໍ່ດັ່ງນັ້ນ, ບິດນີ້ບໍ່ມີຜົນກະທົບ.
[ຕົວເລືອກນີ້ແມ່ນສະເພາະກັບພອດເປົ້າໝາຍ PE ຂອງຕົວເຊື່ອມຕໍ່]
--disable-large-address-aware
ກັບຄືນຜົນກະທົບຂອງທີ່ຜ່ານມາ --large-address-aware ທາງເລືອກ. ນີ້ແມ່ນເປັນປະໂຫຍດຖ້າຫາກວ່າ
--large-address-aware ສະເຫມີຖືກກໍານົດໂດຍໄດເວີ compiler (ເຊັ່ນ: Cygwin gcc) ແລະ
executable ບໍ່ຮອງຮັບທີ່ຢູ່ virtual ຫຼາຍກວ່າ 2 gigabyte. [ທາງເລືອກນີ້
ແມ່ນສະເພາະກັບພອດເປົ້າຫມາຍ PE ຂອງຕົວເຊື່ອມຕໍ່]
--major-image-version ມູນຄ່າ
ກໍານົດຈໍານວນທີ່ສໍາຄັນຂອງ "ສະບັບຮູບພາບ". Defaults to 1. [ຕົວເລືອກນີ້ແມ່ນ
ສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--major-os-version ມູນຄ່າ
ກໍານົດຈໍານວນທີ່ສໍາຄັນຂອງ "os version". ຄ່າເລີ່ມຕົ້ນເປັນ 4. [ຕົວເລືອກນີ້ແມ່ນສະເພາະ
ກັບພອດເປົ້າຫມາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--major-subsystem-version ມູນຄ່າ
ກໍານົດຈໍານວນທີ່ສໍາຄັນຂອງ "ສະບັບລະບົບຍ່ອຍ". Defaults ກັບ 4. [ຕົວເລືອກນີ້ແມ່ນ
ສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--minor-image-version ມູນຄ່າ
ກໍານົດຕົວເລກເລັກນ້ອຍຂອງ "ສະບັບຮູບພາບ". ຄ່າເລີ່ມຕົ້ນເປັນ 0. [ຕົວເລືອກນີ້ແມ່ນ
ສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--minor-os-version ມູນຄ່າ
ກໍານົດຕົວເລກເລັກນ້ອຍຂອງ "os version". ຄ່າເລີ່ມຕົ້ນເປັນ 0. [ຕົວເລືອກນີ້ແມ່ນສະເພາະ
ກັບພອດເປົ້າຫມາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--minor-subsystem-version ມູນຄ່າ
ກໍານົດຕົວເລກເລັກນ້ອຍຂອງ "ຮຸ່ນລະບົບຍ່ອຍ". ຄ່າເລີ່ມຕົ້ນເປັນ 0. [ຕົວເລືອກນີ້ແມ່ນ
ສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--output-def ເອກະສານ
ຕົວເຊື່ອມຕໍ່ຈະສ້າງໄຟລ໌ ເອກະສານ ເຊິ່ງຈະມີໄຟລ໌ DEF ທີ່ສອດຄ້ອງກັບ
DLL ທີ່ຕົວເຊື່ອມຕໍ່ກໍາລັງສ້າງ. ໄຟລ໌ DEF ນີ້ (ທີ່ຄວນຈະເອີ້ນວ່າ "*.def") ອາດຈະ
ຖືກນໍາໃຊ້ເພື່ອສ້າງຫ້ອງສະຫມຸດນໍາເຂົ້າດ້ວຍ "dlltool" ຫຼືອາດຈະຖືກນໍາໃຊ້ເປັນເອກະສານອ້າງອີງ
ອັດຕະໂນມັດ ຫຼືສັນຍາລັກທີ່ສົ່ງອອກ implicitly. [ຕົວເລືອກນີ້ແມ່ນສະເພາະກັບ i386 PE
ພອດເປົ້າຫມາຍຂອງຕົວເຊື່ອມຕໍ່]
--out-implib ເອກະສານ
ຕົວເຊື່ອມຕໍ່ຈະສ້າງໄຟລ໌ ເອກະສານ ເຊິ່ງຈະມີ lib ນໍາເຂົ້າທີ່ສອດຄ້ອງກັນ
DLL ທີ່ຕົວເຊື່ອມຕໍ່ກໍາລັງສ້າງ. ນີ້ lib ການນໍາເຂົ້າ (ທີ່ຄວນຈະເອີ້ນວ່າ "*.dll.a" ຫຼື
"*.a" ອາດຈະຖືກນໍາໃຊ້ເພື່ອເຊື່ອມຕໍ່ລູກຄ້າຕໍ່ກັບ DLL ທີ່ສ້າງຂຶ້ນ; ພຶດຕິກໍານີ້ເຮັດໃຫ້ມັນ
ເປັນໄປໄດ້ທີ່ຈະຂ້າມຂັ້ນຕອນການສ້າງຫ້ອງສະຫມຸດນໍາເຂົ້າ "dlltool" ແຍກຕ່າງຫາກ. [ທາງເລືອກນີ້ແມ່ນ
ສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--enable-auto-image-base
--enable-auto-image-base=ມູນຄ່າ
ເລືອກພື້ນຖານຮູບພາບສໍາລັບ DLLs ໂດຍອັດຕະໂນມັດ, ທາງເລືອກເລີ່ມຕົ້ນດ້ວຍພື້ນຖານ ມູນຄ່າ,
ເວັ້ນເສຍແຕ່ວ່າອັນໃດຖືກລະບຸໂດຍໃຊ້ "--image-base" argument. ໂດຍໃຊ້ hash ທີ່ສ້າງຂຶ້ນ
ຈາກ dllname ເພື່ອສ້າງພື້ນຖານຮູບພາບທີ່ເປັນເອກະລັກສໍາລັບແຕ່ລະ DLL, ການຂັດກັນໃນຫນ່ວຍຄວາມຈໍາແລະ
ການຍົກຍ້າຍທີ່ສາມາດຊັກຊ້າການປະຕິບັດໂຄງການແມ່ນຫຼີກເວັ້ນ. [ທາງເລືອກນີ້ແມ່ນສະເພາະ
ກັບພອດເປົ້າຫມາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--disable-auto-image-base
ຢ່າສ້າງພື້ນຖານຮູບພາບທີ່ເປັນເອກະລັກໂດຍອັດຕະໂນມັດ. ຖ້າບໍ່ມີຜູ້ໃຊ້ທີ່ລະບຸ
ພື້ນຖານຮູບພາບ ("--image-base") ຫຼັງຈາກນັ້ນນໍາໃຊ້ມາດຕະຖານຂອງເວທີ. [ທາງເລືອກນີ້ແມ່ນສະເພາະ
ກັບພອດເປົ້າຫມາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--dll-search-prefix string
ເມື່ອເຊື່ອມຕໍ່ແບບເຄື່ອນໄຫວກັບ dll ໂດຍບໍ່ມີຫ້ອງສະຫມຸດນໍາເຂົ້າ, ຄົ້ນຫາ
" .dll" ໃນການຕັ້ງຄ່າ "lib .dll" ພຶດຕິກໍານີ້ອະນຸຍາດໃຫ້
ຄວາມແຕກຕ່າງທີ່ງ່າຍດາຍລະຫວ່າງ DLLs ທີ່ສ້າງຂຶ້ນສໍາລັບ "ເວທີຍ່ອຍ" ຕ່າງໆ: native, cygwin,
uwin, pw, ແລະອື່ນໆ. ຕົວຢ່າງເຊັ່ນ, cygwin DLLs ປົກກະຕິແລ້ວໃຊ້ "--dll-search-prefix=cyg".
[ຕົວເລືອກນີ້ແມ່ນສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--enable-auto-import
ເຮັດການເຊື່ອມໂຍງທີ່ຊັບຊ້ອນຂອງ "_symbol" ກັບ "__imp__symbol" ສໍາລັບການນໍາເຂົ້າ DATA ຈາກ DLLs,
ແລະສ້າງສັນຍາລັກ thunking ທີ່ຈໍາເປັນໃນເວລາທີ່ການກໍ່ສ້າງຫ້ອງສະຫມຸດນໍາເຂົ້າກັບ
ການສົ່ງອອກຂໍ້ມູນເຫຼົ່ານັ້ນ. ຫມາຍເຫດ: ການນໍາໃຊ້ສ່ວນຂະຫຍາຍ 'ການນໍາເຂົ້າອັດຕະໂນມັດ' ຈະເຮັດໃຫ້ຂໍ້ຄວາມ
ພາກສ່ວນຂອງໄຟລ໌ຮູບພາບທີ່ຈະຂຽນໄດ້. ອັນນີ້ບໍ່ສອດຄ່ອງກັບ PE-COFF
ສະເພາະຮູບແບບທີ່ເຜີຍແຜ່ໂດຍ Microsoft.
ຫມາຍເຫດ - ການໃຊ້ສ່ວນຂະຫຍາຍ 'ການນໍາເຂົ້າອັດຕະໂນມັດ' ຍັງຈະເຮັດໃຫ້ຂໍ້ມູນການອ່ານເທົ່ານັ້ນທີ່ຈະ
ປົກກະຕິແລ້ວຈະຖືກຈັດໃສ່ໃນສ່ວນ .rdata ທີ່ຈະໃສ່ເຂົ້າໄປໃນສ່ວນ .data
ແທນ. ນີ້ແມ່ນເພື່ອເຮັດວຽກກ່ຽວກັບບັນຫາທີ່ມີ consts ທີ່ອະທິບາຍ
ທີ່ນີ້: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
ການນໍາໃຊ້ 'ການນໍາເຂົ້າອັດຕະໂນມັດ' ໂດຍທົ່ວໄປຈະ 'ພຽງແຕ່ເຮັດວຽກ' - ແຕ່ບາງຄັ້ງທ່ານອາດຈະເຫັນສິ່ງນີ້
ຂໍ້ຄວາມ:
"ຕົວແປ ' 'ບໍ່ສາມາດຖືກນໍາເຂົ້າອັດຕະໂນມັດ. ກະລຸນາອ່ານເອກະສານສໍາລັບ ld's.
"--enable-auto-import" ສໍາລັບລາຍລະອຽດ."
ຂໍ້ຄວາມນີ້ເກີດຂຶ້ນເມື່ອບາງສະແດງອອກ (ຍ່ອຍ) ເຂົ້າເຖິງທີ່ຢູ່ທີ່ມອບໃຫ້ໃນທີ່ສຸດ
ຜົນລວມຂອງສອງຄົງທີ່ (ຕາຕະລາງການນໍາເຂົ້າ Win32 ພຽງແຕ່ອະນຸຍາດໃຫ້ຫນຶ່ງ). ກໍລະນີນີ້
ອາດຈະເກີດຂຶ້ນລວມເຖິງການເຂົ້າເຖິງພາກສະຫນາມສະມາຊິກຂອງຕົວແປໂຄງສ້າງທີ່ນໍາເຂົ້າມາຈາກ DLL,
ເຊັ່ນດຽວກັນກັບການນໍາໃຊ້ດັດສະນີຄົງທີ່ເຂົ້າໄປໃນຕົວແປ array ທີ່ນໍາເຂົ້າຈາກ DLL. ໃດ
ຕົວແປຫຼາຍຄໍາ (ອາເຣ, ໂຄງສ້າງ, ຍາວຍາວ, ແລະອື່ນໆ) ອາດຈະເຮັດໃຫ້ເກີດຄວາມຜິດພາດນີ້.
ຢ່າງໃດກໍ່ຕາມ, ໂດຍບໍ່ຄໍານຶງເຖິງປະເພດຂອງຂໍ້ມູນທີ່ແນ່ນອນຂອງຕົວແປທີ່ສົ່ງອອກທີ່ຜິດ, ld ຈະ
ກວດຫາມັນສະເໝີ, ອອກຄຳເຕືອນ, ແລະອອກ.
ມີຫຼາຍວິທີເພື່ອແກ້ໄຂຄວາມຫຍຸ້ງຍາກນີ້, ບໍ່ວ່າຈະເປັນຂໍ້ມູນປະເພດໃດ
ຕົວແປທີ່ສົ່ງອອກ:
ວິທີຫນຶ່ງແມ່ນການໃຊ້ --enable-runtime-pseudo-reloc switch. ນີ້ເຮັດໃຫ້ວຽກງານຂອງ
ປັບການອ້າງອີງໃນລະຫັດລູກຄ້າຂອງທ່ານສໍາລັບສະພາບແວດລ້ອມ runtime, ດັ່ງນັ້ນວິທີການນີ້ເຮັດວຽກ
ພຽງແຕ່ໃນເວລາທີ່ສະພາບແວດລ້ອມ runtime ສະຫນັບສະຫນູນຄຸນນະສົມບັດນີ້.
ການແກ້ໄຂທີສອງແມ່ນການບັງຄັບໃຫ້ຫນຶ່ງຂອງ 'ຄົງທີ່' ເປັນຕົວແປ - ນັ້ນແມ່ນ,
ບໍ່ຮູ້ຈັກ ແລະບໍ່ສາມາດປັບແຕ່ງໄດ້ໃນເວລາລວບລວມ. ສໍາລັບ arrays, ມີສອງຄວາມເປັນໄປໄດ້:
a) ເຮັດໃຫ້ indexee (ທີ່ຢູ່ຂອງ array) ເປັນຕົວແປ, ຫຼື b) ເຮັດໃຫ້ດັດຊະນີ 'ຄົງທີ່'
ຕົວແປ. ດັ່ງນັ້ນ:
ປະເພດ extern extern_array[];
extern_array[1] -->
{ ປະເພດການຜັນຜວນ *t=extern_array; t[1] }
or
ປະເພດ extern extern_array[];
extern_array[1] -->
{ volatile int t=1; extern_array[t] }
ສໍາລັບໂຄງສ້າງ (ແລະປະເພດຂໍ້ມູນຫຼາຍຄໍາອື່ນໆ) ທາງເລືອກດຽວແມ່ນເພື່ອເຮັດໃຫ້
ໂຄງສ້າງຕົວຂອງມັນເອງ (ຫຼືຍາວຍາວ, ຫຼື ...) ຕົວແປ:
extern struct s extern_struct;
extern_struct.field -->
{ ໂຄງສ້າງທີ່ປ່ຽນແປງໄດ້ s *t=&extern_struct; t->ພາກສະຫນາມ }
or
extern long long extern_ll ;
extern_ll -->
{ ຍາວທີ່ປ່ຽນແປງໄດ້ * local_ll=&extern_ll; *local_ll }
ວິທີການທີສາມຂອງການຈັດການກັບຄວາມຫຍຸ້ງຍາກນີ້ແມ່ນການປະຖິ້ມ 'ການນໍາເຂົ້າອັດຕະໂນມັດ' ສໍາລັບ
ສັນຍາລັກທີ່ກະທໍາຜິດແລະຫມາຍມັນດ້ວຍ "__declspec(dllimport)". ຢ່າງໃດກໍຕາມ, ໃນທາງປະຕິບັດ
ຮຽກຮ້ອງໃຫ້ມີການລວບລວມເວລາ #define ເພື່ອຊີ້ບອກວ່າທ່ານກໍາລັງສ້າງ DLL,
ການສ້າງລະຫັດລູກຄ້າທີ່ຈະເຊື່ອມຕໍ່ກັບ DLL, ຫຼືພຽງແຕ່ການກໍ່ສ້າງ / ເຊື່ອມຕໍ່ກັບ static
ຫໍສະໝຸດ. ໃນການເຮັດໃຫ້ທາງເລືອກລະຫວ່າງວິທີການຕ່າງໆຂອງການແກ້ໄຂໂດຍກົງ '
ແກ້ໄຂບັນຫາການຊົດເຊີຍຄົງທີ່, ທ່ານຄວນພິຈາລະນາການນໍາໃຊ້ຕົວຈິງທົ່ວໄປ:
ຕົ້ນສະບັບ:
--foo.h
extern int arr[];
--foo.c
#ລວມທັງ "foo.h"
void main(int argc, char **argv){
printf("%d\n",arr[1]);
}
Solution 1:
--foo.h
extern int arr[];
--foo.c
#ລວມທັງ "foo.h"
void main(int argc, char **argv){
/* ການແກ້ໄຂນີ້ແມ່ນສໍາລັບ win32 ແລະ cygwin; ຢ່າ "ເພີ່ມປະສິດທິພາບ" */
volatile int *parr = arr;
printf("%d\n",parr[1]);
}
Solution 2:
--foo.h
/* ໝາຍເຫດ: ການສົ່ງອອກອັດຕະໂນມັດແມ່ນຖືວ່າ (ບໍ່ມີ __declspec(dllexport)) */
#if (ກຳນົດ(_WIN32) || ກຳນົດ(__CYGWIN__)) && \
!(ກຳນົດ(FOO_BUILD_DLL) || ກຳນົດ(FOO_STATIC))
#ກຳນົດ FOO_IMPORT __declspec(dllimport)
#ອື່ນ
#ກຳນົດ FOO_IMPORT
#ສຸດທ້າຍ
extern FOO_IMPORT int arr[];
--foo.c
#ລວມທັງ "foo.h"
void main(int argc, char **argv){
printf("%d\n",arr[1]);
}
ວິທີທີສີ່ເພື່ອຫຼີກລ່ຽງບັນຫານີ້ແມ່ນໃຫ້ລະຫັດຫ້ອງສະໝຸດຂອງເຈົ້າຄືນໃໝ່ເພື່ອໃຊ້ສິ່ງທີ່ມີປະໂຫຍດ
ການໂຕ້ຕອບແທນທີ່ຈະເປັນການໂຕ້ຕອບຂໍ້ມູນສໍາລັບຕົວແປທີ່ລະເມີດ (ຕົວຢ່າງ set_foo() ແລະ
get_foo() ຫນ້າທີ່ຂອງການເຂົ້າເຖິງ). [ທາງເລືອກນີ້ແມ່ນສະເພາະກັບພອດເປົ້າຫມາຍ i386 PE
ຂອງຕົວເຊື່ອມຕໍ່]
--disable-auto-import
ຢ່າພະຍາຍາມເຮັດການເຊື່ອມໂຍງທີ່ຊັບຊ້ອນຂອງ "_symbol" ກັບ "__imp__symbol" ສໍາລັບ DATA
ນໍາເຂົ້າຈາກ DLLs. [ທາງເລືອກນີ້ແມ່ນສະເພາະກັບ i386 PE ເປົ້າຫມາຍພອດຂອງ
ຕົວເຊື່ອມຕໍ່]
--enable-runtime-pseudo-reloc
ຖ້າລະຫັດຂອງທ່ານປະກອບດ້ວຍການສະແດງອອກທີ່ອະທິບາຍໄວ້ໃນສ່ວນ --enable-auto-import, ນັ້ນແມ່ນ,
DATA ນໍາເຂົ້າຈາກ DLL ດ້ວຍການຊົດເຊີຍທີ່ບໍ່ແມ່ນສູນ, ສະຫຼັບນີ້ຈະສ້າງ vector ຂອງ
'ການຍົກຍ້າຍ pseudo runtime' ເຊິ່ງສາມາດຖືກນໍາໃຊ້ໂດຍສະພາບແວດລ້ອມ runtime ເພື່ອປັບ
ການອ້າງອີງເຖິງຂໍ້ມູນດັ່ງກ່າວໃນລະຫັດລູກຄ້າຂອງທ່ານ. [ຕົວເລືອກນີ້ແມ່ນສະເພາະກັບ i386 PE
ພອດເປົ້າຫມາຍຂອງຕົວເຊື່ອມຕໍ່]
--disable-runtime-pseudo-reloc
ຢ່າສ້າງການຍົກຍ້າຍ pseudo ສໍາລັບການນໍາເຂົ້າ DATA ທີ່ບໍ່ແມ່ນສູນຈາກ DLLs. [ນີ້
ທາງເລືອກແມ່ນສະເພາະກັບພອດເປົ້າຫມາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--enable-extra-pe-debug
ສະແດງຂໍ້ມູນດີບັກເພີ່ມເຕີມກ່ຽວກັບການນໍາເຂົ້າອັດຕະໂນມັດສັນຍາລັກ thunking. [ທາງເລືອກນີ້ແມ່ນ
ສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
--section-alignment
ກໍານົດການຈັດລໍາດັບພາກສ່ວນ. ພາກສ່ວນຕ່າງໆໃນໜ່ວຍຄວາມຈຳຈະເລີ່ມຕົ້ນຢູ່ບ່ອນຢູ່ສະເໝີ
ເປັນຕົວຄູນຂອງຕົວເລກນີ້. ຄ່າເລີ່ມຕົ້ນເປັນ 0x1000. [ທາງເລືອກນີ້ແມ່ນສະເພາະກັບ
i386 PE ເປົ້າຫມາຍພອດຂອງຕົວເຊື່ອມຕໍ່]
-- stack reserve
-- stack reserve,ຄໍາຫມັ້ນສັນຍາ
ລະບຸຈໍານວນຂອງ bytes ຂອງຫນ່ວຍຄວາມຈໍາທີ່ຈະສະຫງວນ (ແລະທາງເລືອກຄໍາຫມັ້ນສັນຍາ) ທີ່ຈະນໍາໃຊ້ເປັນ
stack ສໍາລັບໂຄງການນີ້. ຄ່າເລີ່ມຕົ້ນແມ່ນສະຫງວນໄວ້ 2MB, 4K ຫມັ້ນສັນຍາ. [ທາງເລືອກນີ້ແມ່ນ
ສະເພາະກັບພອດເປົ້າໝາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
-- ລະບົບຍ່ອຍ ທີ່
-- ລະບົບຍ່ອຍ ທີ່:ທີ່ສໍາຄັນ
-- ລະບົບຍ່ອຍ ທີ່:ທີ່ສໍາຄັນ.ເລັກນ້ອຍ
ລະບຸລະບົບຍ່ອຍທີ່ໂຄງການຂອງເຈົ້າຈະປະຕິບັດ. ຄຸນຄ່າທາງກົດໝາຍສຳລັບ
ທີ່ ແມ່ນ "native", "windows", "console", "posix", ແລະ "xbox". ເຈົ້າອາດຈະຕັ້ງທາງເລືອກ
ສະບັບລະບົບຍ່ອຍ. ຄ່າຕົວເລກຍັງຖືກຍອມຮັບ ທີ່. [ທາງເລືອກນີ້
ແມ່ນສະເພາະກັບພອດເປົ້າຫມາຍ i386 PE ຂອງຕົວເຊື່ອມຕໍ່]
ຕົວເລືອກຕໍ່ໄປນີ້ກໍານົດທຸງຢູ່ໃນຊ່ອງ "DllCharacteristics" ຂອງໄຟລ໌ PE
header: [ຕົວເລືອກເຫຼົ່ານີ້ແມ່ນສະເພາະກັບພອດເປົ້າໝາຍ PE ຂອງຕົວເຊື່ອມຕໍ່]
--high-entropy-va
ຮູບພາບແມ່ນເຂົ້າກັນໄດ້ກັບ 64-bit address layout layout randomization (ASLR).
--dynamicbase
ທີ່ຢູ່ຖານຮູບພາບອາດຈະຖືກຍົກຍ້າຍໂດຍໃຊ້ການຈັດຮູບແບບພື້ນທີ່ທີ່ຢູ່ແບບສຸ່ມ
(ASLR). ຄຸນນະສົມບັດນີ້ໄດ້ຖືກນໍາສະເຫນີດ້ວຍ MS Windows Vista ສໍາລັບເປົ້າຫມາຍ i386 PE.
--forceinteg
ການກວດສອບຄວາມຖືກຕ້ອງຂອງລະຫັດຖືກບັງຄັບໃຊ້.
--nxcompat
ຮູບພາບແມ່ນເຂົ້າກັນໄດ້ກັບ Data Execution Prevention. ຄຸນນະສົມບັດນີ້ແມ່ນ
ນໍາສະເຫນີດ້ວຍ MS Windows XP SP2 ສໍາລັບເປົ້າຫມາຍ i386 PE.
-- ບໍ່ມີການໂດດດ່ຽວ
ເຖິງແມ່ນວ່າຮູບພາບເຂົ້າໃຈຄວາມໂດດດ່ຽວ, ຢ່າແຍກຮູບພາບ.
--no-seh
ຮູບພາບບໍ່ໄດ້ໃຊ້ SEH. ບໍ່ມີຕົວຈັດການ SE ອາດຈະຖືກເອີ້ນຈາກຮູບນີ້.
-- ບໍ່ມີການຜູກມັດ
ຢ່າຜູກມັດຮູບນີ້.
--wdmdriver
ໄດເວີໃຊ້ MS Windows Driver Model.
--tsaware
ຮູບພາບແມ່ນ Terminal Server ຮູ້.
--insert-timestamp
--no-insert-timestamp
ໃສ່ສະແຕມເວລາຈິງໃສ່ໃນຮູບ. ນີ້ແມ່ນພຶດຕິກໍາເລີ່ມຕົ້ນທີ່ມັນກົງກັນ
ລະຫັດມໍລະດົກແລະມັນຫມາຍຄວາມວ່າຮູບພາບຈະເຮັດວຽກກັບເຄື່ອງມືອື່ນໆ, ເປັນເຈົ້າຂອງ. ໄດ້
ບັນຫາກັບຄ່າເລີ່ມຕົ້ນນີ້ແມ່ນວ່າມັນຈະເຮັດໃຫ້ຮູບພາບທີ່ແຕກຕ່າງກັນເລັກນ້ອຍ
ຜະລິດແຕ່ລະຄັ້ງທີ່ແຫຼ່ງດຽວກັນຖືກເຊື່ອມຕໍ່. ທາງເລືອກ --no-insert-timestamp ສາມາດເຮັດໄດ້
ຖືກນໍາໃຊ້ເພື່ອໃສ່ຄ່າສູນສໍາລັບການສະແຕມເວລາ, ນີ້ຮັບປະກັນວ່າ binaries ຜະລິດ
ຈາກແຫຼ່ງທີ່ຄືກັນຈະປຽບທຽບຄືກັນ.
ເປົ້າໝາຍ C6X uClinux ໃຊ້ຮູບແບບຖານສອງທີ່ເອີ້ນວ່າ DSBT ເພື່ອຮອງຮັບຫ້ອງສະໝຸດທີ່ໃຊ້ຮ່ວມກັນ. ແຕ່ລະ
ຫ້ອງສະຫມຸດທີ່ໃຊ້ຮ່ວມກັນໃນລະບົບຈໍາເປັນຕ້ອງມີດັດສະນີທີ່ເປັນເອກະລັກ; ການປະຕິບັດທັງຫມົດໃຊ້ດັດສະນີຂອງ
0.
--dsbt-size ຂະຫນາດ
ທາງເລືອກນີ້ກໍານົດຈໍານວນຂອງການເຂົ້າໃນ DSBT ຂອງປະຈຸບັນທີ່ປະຕິບັດຫຼືແບ່ງປັນ
ຫ້ອງສະຫມຸດເພື່ອ ຂະຫນາດ. ຄ່າເລີ່ມຕົ້ນແມ່ນເພື່ອສ້າງຕາຕະລາງທີ່ມີ 64 ລາຍການ.
--dsbt-index ດັດຊະນີ
ທາງເລືອກນີ້ກໍານົດດັດຊະນີ DSBT ຂອງຫ້ອງສະຫມຸດປະຕິບັດຫຼືແບ່ງປັນປະຈຸບັນເປັນ ດັດຊະນີ.
ຄ່າເລີ່ມຕົ້ນແມ່ນ 0, ເຊິ່ງເຫມາະສົມສໍາລັບການສ້າງການດໍາເນີນການ. ຖ້າແບ່ງປັນ
ຫ້ອງສະຫມຸດແມ່ນຖືກສ້າງຂຶ້ນດ້ວຍດັດຊະນີ DSBT ຂອງ 0, ການຍ້າຍ "R_C6000_DSBT_INDEX" ແມ່ນ
ຄັດລອກເຂົ້າໄປໃນໄຟລ໌ຜົນຜະລິດ.
ໄດ້ --no-merge-exidx-entries switch ປິດການໃຊ້ງານການລວມເຂົ້າຂອງ exidx ທີ່ຕິດກັນຢູ່ໃນ
ກອບ unwind ຂໍ້ມູນ.
ຕົວເຊື່ອມຕໍ່ 68HC11 ແລະ 68HC12 ສະຫນັບສະຫນູນທາງເລືອກສະເພາະເພື່ອຄວບຄຸມທະນາຄານຫນ່ວຍຄວາມຈໍາ
ສະຫຼັບການສ້າງແຜນທີ່ ແລະການສ້າງລະຫັດ trampoline.
-- ບໍ່ມີ trampoline
ຕົວເລືອກນີ້ປິດການຜະລິດ trampoline. ໂດຍຄ່າເລີ່ມຕົ້ນ trampoline ແມ່ນ
ສ້າງຂຶ້ນສໍາລັບແຕ່ລະຫນ້າທີ່ຫ່າງໄກເຊິ່ງເອີ້ນວ່າການນໍາໃຊ້ຄໍາແນະນໍາ "jsr" (ນີ້
ເກີດຂຶ້ນເມື່ອຕົວຊີ້ໄປຫາຫນ້າທີ່ໄກຖືກປະຕິບັດ).
--bank-window ຊື່
ທາງເລືອກນີ້ຊີ້ໃຫ້ຕົວເຊື່ອມຕໍ່ຊື່ຂອງພາກພື້ນຄວາມຊົງຈໍາໃນ ຫນ່ວຍຄວາມຈໍາ
ຂໍ້ມູນສະເພາະທີ່ອະທິບາຍໜ້າຈໍທະນາຄານຄວາມຈຳ. ຄໍານິຍາມຂອງພາກພື້ນດັ່ງກ່າວແມ່ນ
ຫຼັງຈາກນັ້ນຖືກນໍາໃຊ້ໂດຍຕົວເຊື່ອມຕໍ່ເພື່ອຄິດໄລ່ຫນ້າທີ່ແລະທີ່ຢູ່ພາຍໃນປ່ອງຢ້ຽມຫນ່ວຍຄວາມຈໍາ.
ທາງເລືອກດັ່ງຕໍ່ໄປນີ້ແມ່ນສະຫນັບສະຫນູນການຄວບຄຸມການຜະລິດ GOT ໃນເວລາທີ່ການເຊື່ອມຕໍ່ສໍາລັບການ
68K ເປົ້າຫມາຍ.
--got=ປະເພດ
ຕົວເລືອກນີ້ບອກຕົວເຊື່ອມຕໍ່ທີ່ໂຄງການ GOT ການຜະລິດທີ່ຈະໃຊ້. ປະເພດ ຄວນຈະເປັນຫນຶ່ງ
of ດຽວ, ກະທົບທາງລົບ, multigot or ເປົ້າຫມາຍ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມເບິ່ງການເຂົ້າຂໍ້ມູນ
ສໍາລັບການ ld.
ທາງເລືອກຕໍ່ໄປນີ້ໄດ້ຮັບການສະຫນັບສະຫນູນເພື່ອຄວບຄຸມການຜະລິດຄໍາແນະນໍາ microMIPS ເມື່ອ
ການເຊື່ອມໂຍງສໍາລັບເປົ້າຫມາຍ MIPS.
--insn32
--no-insn32
ຕົວເລືອກເຫຼົ່ານີ້ຄວບຄຸມທາງເລືອກຂອງຄໍາແນະນໍາ microMIPS ທີ່ໃຊ້ໃນລະຫັດທີ່ສ້າງຂຶ້ນໂດຍ
ຕົວເຊື່ອມຕໍ່, ເຊັ່ນວ່າຢູ່ໃນ PLT ຫຼື stubs binding lazy, ຫຼືໃນການຜ່ອນຄາຍ. ຖ້າ
--insn32 ຖືກນໍາໃຊ້, ຫຼັງຈາກນັ້ນຕົວເຊື່ອມຕໍ່ໃຊ້ພຽງແຕ່ການເຂົ້າລະຫັດຄໍາແນະນໍາ 32-bit. ໂດຍຄ່າເລີ່ມຕົ້ນ
ຫຼືຖ້າ --no-insn32 ຖືກນໍາໃຊ້, ການເຂົ້າລະຫັດຄໍາແນະນໍາທັງຫມົດແມ່ນຖືກນໍາໃຊ້, ລວມທັງ 16-bit
ຖ້າເປັນໄປໄດ້.
ENVIRONMENT
ທ່ານສາມາດປ່ຽນພຶດຕິກໍາຂອງ ld ກັບຕົວແປສະພາບແວດລ້ອມ "GNUTARGET",
"LDEMULATION" ແລະ "COLLECT_NO_DEMANGLE".
"GNUTARGET" ກໍານົດຮູບແບບວັດຖຸໄຟລ໌ທີ່ປ້ອນເຂົ້າຖ້າທ່ານບໍ່ໃຊ້ -b (ຫຼືຄໍາສັບຄ້າຍຄືຂອງມັນ
-- ຮູບແບບ). ຄ່າຂອງມັນຄວນຈະເປັນໜຶ່ງໃນຊື່ BFD ສໍາລັບຮູບແບບການປ້ອນຂໍ້ມູນ. ຖ້າບໍ່ມີ
"GNUTARGET" ໃນສະພາບແວດລ້ອມ, ld ໃຊ້ຮູບແບບທໍາມະຊາດຂອງເປົ້າຫມາຍ. ຖ້າ "GNUTARGET"
ຖືກຕັ້ງເປັນ "ຄ່າເລີ່ມຕົ້ນ" ຫຼັງຈາກນັ້ນ BFD ພະຍາຍາມຄົ້ນພົບຮູບແບບການປ້ອນຂໍ້ມູນໂດຍການກວດເບິ່ງຖານສອງ
ໄຟລ໌ປ້ອນຂໍ້ມູນ; ວິທີການນີ້ມັກຈະປະສົບຜົນສໍາເລັດ, ແຕ່ມີທ່າແຮງທີ່ບໍ່ຊັດເຈນ, ນັບຕັ້ງແຕ່ນັ້ນມາ
ບໍ່ແມ່ນວິທີການຮັບປະກັນວ່າຕົວເລກ magic ທີ່ໃຊ້ເພື່ອລະບຸຮູບແບບຂອງ object-file
ເປັນເອກະລັກ. ຢ່າງໃດກໍ່ຕາມ, ຂັ້ນຕອນການຕັ້ງຄ່າສໍາລັບ BFD ໃນແຕ່ລະລະບົບວາງໄວ້
ຮູບແບບທໍາມະດາສໍາລັບລະບົບນັ້ນທໍາອິດໃນລາຍການຄົ້ນຫາ, ດັ່ງນັ້ນຄວາມບໍ່ແນ່ນອນຈະຖືກແກ້ໄຂ
ໃນເງື່ອນໄຂຂອງສົນທິສັນຍາ.
"LDEMULATION" ກໍານົດການຈໍາລອງເລີ່ມຕົ້ນຖ້າທ່ານບໍ່ໃຊ້ -m ທາງເລືອກ. ທ
emulation ສາມາດສົ່ງຜົນກະທົບຕໍ່ລັກສະນະຕ່າງໆຂອງພຶດຕິກໍາຕົວເຊື່ອມຕໍ່, ໂດຍສະເພາະຕົວເຊື່ອມຕໍ່ເລີ່ມຕົ້ນ
ສະຄຣິບ. ທ່ານສາມາດບັນຊີລາຍການ emulations ທີ່ມີຢູ່ກັບ -- verbose or -V ທາງເລືອກ. ຖ້າ
-m ທາງເລືອກບໍ່ໄດ້ຖືກນໍາໃຊ້, ແລະຕົວແປສະພາບແວດລ້ອມ "LDEMULATION" ບໍ່ໄດ້ຖືກກໍານົດ, the
emulation ເລີ່ມຕົ້ນແມ່ນຂຶ້ນກັບວິທີການ linker ໄດ້ຖືກ configured.
ໂດຍປົກກະຕິ, ຕົວເຊື່ອມຕໍ່ຈະເລີ່ມຕົ້ນເພື່ອ demangling ສັນຍາລັກ. ຢ່າງໃດກໍຕາມ, ຖ້າ
"COLLECT_NO_DEMANGLE" ຖືກຕັ້ງໄວ້ໃນສະພາບແວດລ້ອມ, ຈາກນັ້ນມັນຈະເປັນຄ່າເລີ່ມຕົ້ນທີ່ຈະບໍ່ demangling.
ສັນຍາລັກ. ຕົວແປສະພາບແວດລ້ອມນີ້ຖືກໃຊ້ໃນແບບທີ່ຄ້າຍຄືກັນໂດຍຕົວເຊື່ອມຕໍ່ "gcc".
ໂຄງການ wrapper. ຄ່າເລີ່ມຕົ້ນອາດຈະຖືກ overridden ໂດຍ --ທໍາລາຍ ແລະ -- ບໍ່ມີການຂັດຂວາງ
ຕົວເລືອກ
ໃຊ້ mips-linux-gnu-ld ອອນໄລນ໌ໂດຍໃຊ້ການບໍລິການ onworks.net