Skip to main content

Semua Tentang Perintah Linux / Unix: ld

Linux commands: id Command | print real and effective user and group IDs (Juni 2026)

Linux commands: id Command | print real and effective user and group IDs (Juni 2026)
Anonim

NAMA

ld - Menggunakan LD, tautan GNU

RINGKASAN

ld pilihan objfile …

DESKRIPSI

ld menggabungkan sejumlah objek dan file arsip, memindahkan data mereka dan mengikat referensi simbol. Biasanya langkah terakhir dalam menyusun program adalah menjalankannyald.

ld menerima file Linker Command Language yang ditulis dalam superset dari sintaksis Command Language Command AT & T, untuk memberikan kontrol eksplisit dan total atas proses penautan.

Halaman manual ini tidak menggambarkan bahasa perintah; lihatld masukkan dalam "info", atau ld manual: tautan GNU, untuk perincian lengkap pada bahasa perintah dan aspek-aspek lain dari penghubung GNU.

Versi ini darild menggunakan pustaka BFD tujuan umum untuk beroperasi pada file objek. Ini memungkinkanld untuk membaca, menggabungkan, dan menulis file objek dalam berbagai format berbeda --- misalnya, COFF atau "a.out". Format yang berbeda dapat dihubungkan bersama untuk menghasilkan jenis file objek yang tersedia.

Selain fleksibilitasnya, tautan GNU lebih bermanfaat daripada penghubung lain dalam memberikan informasi diagnostik. Banyak penghubung meninggalkan eksekusi segera setelah menghadapi kesalahan; sedapat mungkin,ld terus mengeksekusi, memungkinkan Anda untuk mengidentifikasi kesalahan lain (atau, dalam beberapa kasus, untuk mendapatkan file output terlepas dari kesalahan).

Penghubung GNUld dimaksudkan untuk mencakup berbagai situasi, dan untuk menjadi serelevan mungkin dengan penghubung lainnya. Akibatnya, Anda memiliki banyak pilihan untuk mengendalikan perilakunya.

PILIHAN

Linker mendukung banyak opsi baris perintah, tetapi dalam prakteknya beberapa dari mereka digunakan dalam konteks tertentu. Misalnya, penggunaan yang seringld adalah untuk menautkan file objek Unix standar pada sistem Unix standar yang didukung. Pada sistem seperti itu, untuk menautkan file "hello.o":

saya bersedia /lib/crt0.o hello.o -lc

Ini memberitahuld untuk menghasilkan file bernama keluaran sebagai hasil dari menghubungkan file "/lib/crt0.o" dengan "hello.o" dan perpustakaan "libc.a", yang akan berasal dari direktori pencarian standar. (Lihat diskusi tentang-l pilihan di bawah ini.)

Beberapa opsi baris perintah untukld dapat ditentukan pada titik mana pun di baris perintah. Namun, opsi yang merujuk ke file, seperti-l atau-T, menyebabkan file yang akan dibaca pada titik di mana opsi muncul di baris perintah, relatif terhadap file objek dan opsi file lainnya. Mengulangi opsi non-file dengan argumen yang berbeda tidak akan memiliki efek lebih lanjut, atau mengganti kejadian sebelumnya (yang lebih jauh ke kiri pada baris perintah) dari opsi itu. Opsi yang dapat ditentukan secara bermakna lebih dari sekali dicatat dalam uraian di bawah ini.

Argumen non-opsi adalah file objek atau arsip yang harus dihubungkan bersama. Mereka mungkin mengikuti, mendahului, atau dicampur dengan opsi baris perintah, kecuali bahwa argumen file objek tidak dapat ditempatkan di antara opsi dan argumennya.

Biasanya linker dipanggil dengan setidaknya satu file objek, tetapi Anda dapat menentukan bentuk lain dari file input biner menggunakan-l, -R, dan bahasa perintah skrip. Jika tidak file input biner sama sekali ditentukan, linker tidak menghasilkan output apapun, dan masalah pesanTidak ada file input.

Jika linker tidak dapat mengenali format file objek, itu akan menganggap bahwa itu adalah skrip linker. Skrip yang ditentukan dengan cara ini menambah skrip tautan utama yang digunakan untuk tautan (baik skrip tautan default atau yang ditentukan dengan menggunakan-T). Fitur ini memungkinkan penaut untuk menautkan ke file yang tampak sebagai objek atau arsip, tetapi sebenarnya hanya mendefinisikan beberapa nilai simbol, atau menggunakan "INPUT" atau "GROUP" untuk memuat objek lain. Perhatikan bahwa menentukan skrip dengan cara ini hanya menambah skrip tautan utama; menggunakan-T pilihan untuk mengganti skrip linker default sepenuhnya.

Untuk opsi yang namanya adalah huruf tunggal, argumen opsi harus mengikuti huruf opsi tanpa spasi campur, atau diberikan sebagai argumen terpisah segera mengikuti opsi yang mengharuskannya.

Untuk opsi yang namanya berupa banyak huruf, baik satu atau dua garis dapat mendahului nama opsi; sebagai contoh,-trace-simbol dan--trace-simbol ekuivalen. Catatan - ada satu pengecualian untuk aturan ini. Beberapa opsi huruf yang dimulai dengan huruf kecil 'o' hanya dapat diawali dengan dua tanda hubung. Ini untuk mengurangi kebingungan dengan-Hai pilihan. Jadi misalnya-omagik menetapkan nama file output kesihir sedangkan--omagik menetapkan bendera NMAGIC pada output.

Argumen ke opsi multi-huruf harus dipisahkan dari nama opsi dengan tanda yang sama, atau diberikan sebagai argumen terpisah segera mengikuti opsi yang membutuhkannya. Sebagai contoh,- foo simbol-simbol dan--trace-simbol = foo ekuivalen. Singkatan unik dari nama-nama opsi multi-huruf diterima.

Catatan - jika penaut sedang dipanggil secara tidak langsung, melalui driver kompiler (misgcc) maka semua opsi baris perintah linker harus diawali dengan-La, (atau apa pun yang sesuai untuk driver compiler tertentu) seperti ini:

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

Ini penting, karena jika tidak, program driver kompilator dapat secara diam-diam menjatuhkan opsi tautan, menghasilkan tautan yang buruk.

Berikut ini adalah tabel saklar baris perintah generik yang diterima oleh tautan GNU:

-Sebuah kata kunci

Opsi ini didukung untuk kompatibilitas HP / UX. Itu kata kunci Argumen harus menjadi salah satu senararsip, bersama, ataudefault. -arsip secara fungsional setara dengan-Bstatic, dan dua kata kunci lainnya secara fungsional setara dengan-Bdynamic. Pilihan ini dapat digunakan beberapa kali.

-SEBUAH Arsitektur

--arsitektur = Arsitektur

Dalam rilis saat inild, opsi ini hanya berguna untuk keluarga arsitektur Intel 960. Karenald konfigurasi, Arsitektur Argumen mengidentifikasi arsitektur tertentu dalam 960 keluarga, memungkinkan beberapa pengamanan dan memodifikasi jalur penelusuran arsip-perpustakaan.

Rilis mendatang darild dapat mendukung fungsi serupa untuk keluarga arsitektur lainnya.

-b Masukkan format

--format = Masukkan format

ld dapat dikonfigurasi untuk mendukung lebih dari satu jenis file objek. Jika Andald dikonfigurasi dengan cara ini, Anda dapat menggunakan-b opsi untuk menentukan format biner untuk file objek input yang mengikuti opsi ini pada baris perintah. Bahkan ketikald dikonfigurasi untuk mendukung format objek alternatif, Anda biasanya tidak perlu menentukan ini, karenald harus dikonfigurasi untuk mengharapkan sebagai format input default format yang paling umum pada setiap mesin. Masukkan format adalah string teks, nama format tertentu yang didukung oleh pustaka BFD. (Anda dapat mencantumkan format biner yang tersedia denganobjdump -i.)

Anda mungkin ingin menggunakan opsi ini jika Anda menautkan file dengan format biner yang tidak biasa. Anda juga bisa menggunakan-b untuk berganti format secara eksplisit (saat menautkan file objek dari berbagai format), dengan menyertakan-b Masukkan format sebelum setiap kelompok file objek dalam format tertentu.

Format default diambil dari variabel lingkungan "GNUTARGET".

Anda juga dapat menentukan format input dari skrip, menggunakan perintah "TARGET";

-c MRI-commandfile

--mri-script = MRI-commandfile

Untuk kompatibilitas dengan penghubung yang dihasilkan oleh MRI,ld menerima file skrip yang ditulis dalam bahasa perintah alternatif yang terbatas, yang dijelaskan di bagian File Skrip Kompatibel MRI pada dokumentasi GNU ld. Memperkenalkan file skrip MRI dengan opsi-c; menggunakan-T opsi untuk menjalankan skrip tautan yang ditulis dalam tujuan umumld bahasa scripting. Jika MRI-cmdfile tidak ada,ldmencarinya di direktori yang ditentukan oleh apa pun-L pilihan.

-d

-dc

-dp

Ketiga opsi ini setara; berbagai bentuk didukung untuk kompatibilitas dengan penghubung lainnya. Mereka memberikan ruang untuk simbol umum bahkan jika file output relocatable ditentukan (dengan-r). Perintah skrip "FORCE_COMMON_ALLOCATION" memiliki efek yang sama.

-e masuk

--entry = masuk

Menggunakan masuk sebagai simbol eksplisit untuk memulai pelaksanaan program Anda, daripada titik masuk default. Jika tidak ada simbol bernama masuk , penaut akan mencoba mengurai masuk sebagai angka, dan gunakan itu sebagai alamat entri (nomor akan ditafsirkan dalam basis 10; Anda dapat menggunakan yang terkemuka0x untuk basis 16, atau yang terkemuka0 untuk basis 8).

-E

--ekspor-dinamis

Saat membuat executable yang terhubung secara dinamis, tambahkan semua simbol ke tabel simbol dinamis. Tabel simbol dinamis adalah himpunan simbol yang terlihat dari objek dinamis pada waktu proses.

Jika Anda tidak menggunakan opsi ini, tabel simbol dinamis biasanya hanya berisi simbol-simbol yang direferensikan oleh beberapa objek dinamis yang disebutkan dalam tautan.

Jika Anda menggunakan "dlopen" untuk memuat objek dinamis yang perlu merujuk kembali ke simbol yang ditentukan oleh program, daripada objek dinamis lainnya, maka Anda mungkin perlu menggunakan opsi ini ketika menautkan program itu sendiri.

Anda juga dapat menggunakan skrip versi untuk mengontrol simbol apa yang harus ditambahkan ke tabel simbol dinamis jika format output mendukungnya. Lihat uraian dari--versi-naskah di @ ref {VERSION}.

-EB

Tautkan objek big-endian. Ini mempengaruhi format output default.

-EL

Tautkan objek little-endian. Ini mempengaruhi format output default.

-f

--bantu nama

Saat membuat objek bersama ELF, setel field DT_AUXILIARY internal ke nama yang ditentukan. Ini memberitahu linker dinamis bahwa tabel simbol dari objek yang dibagikan harus digunakan sebagai filter tambahan pada tabel simbol dari objek yang dibagikan. nama .

Jika nantinya Anda menautkan program terhadap objek filter ini, maka, ketika Anda menjalankan program, tautan dinamis akan melihat bidang DT_AUXILIARY. Jika penaut dinamis menyelesaikan simbol apa pun dari objek filter, pertama-tama akan memeriksa apakah ada definisi di objek bersama nama . Jika ada, itu akan digunakan sebagai pengganti definisi dalam objek filter. Objek yang dibagikan nama tidak perlu ada. Demikianlah objek yang dibagikan nama dapat digunakan untuk menyediakan implementasi alternatif fungsi-fungsi tertentu, mungkin untuk debugging atau untuk kinerja spesifik mesin.

Opsi ini dapat ditentukan lebih dari satu kali. Entri DT_AUXILIARY akan dibuat sesuai urutan kemunculannya di baris perintah.

-F nama

--filter nama

Saat membuat objek bersama ELF, setel field DT_FILTER internal ke nama yang ditentukan. Ini memberitahu linker dinamis bahwa tabel simbol dari objek bersama yang sedang dibuat harus digunakan sebagai filter pada tabel simbol dari objek yang dibagikan. nama .

Jika nantinya Anda menghubungkan program terhadap objek filter ini, maka, ketika Anda menjalankan program, tautan dinamis akan melihat bidang DT_FILTER. Linker dinamis akan menyelesaikan simbol sesuai dengan tabel simbol objek filter seperti biasa, tetapi tautan itu akan benar-benar terkait dengan definisi yang ditemukan di objek bersama nama . Dengan demikian objek filter dapat digunakan untuk memilih subset dari simbol-simbol yang disediakan oleh objek nama .

Beberapa penghubung lama menggunakan-F pilihan di seluruh toolchain kompilasi untuk menentukan format objek-file untuk kedua file objek input dan output. Penghubung GNU menggunakan mekanisme lain untuk tujuan ini:-b, --format, --oformat opsi, perintah "TARGET" di skrip tautan, dan variabel lingkungan "GNUTARGET". Linker GNU akan mengabaikan-F saat tidak membuat objek bersama ELF.

-fini nama

Saat membuat objek yang dapat dieksekusi atau dibagikan ELF, hubungi NAME ketika objek yang dapat dijalankan atau dibagikan dibongkar, dengan mengatur DT_FINI ke alamat fungsi. Secara default, tautan menggunakan "_fini" sebagai fungsi untuk dipanggil.

-g

Diabaikan. Disediakan untuk kompatibilitas dengan alat lain.

-G nilai

--gpsize = nilai

Atur ukuran maksimum objek yang akan dioptimalkan menggunakan register GP ke ukuran . Ini hanya bermakna untuk format file objek seperti MIPS ECOFF yang mendukung menempatkan objek besar dan kecil ke dalam bagian yang berbeda. Ini diabaikan untuk format file objek lain.

-h nama

-soname = nama

Saat membuat objek bersama ELF, setel field DT_SONAME internal ke nama yang ditentukan. Ketika sebuah executable terhubung dengan objek bersama yang memiliki field DT_SONAME, maka ketika executable menjalankan linker dinamis akan mencoba untuk memuat objek bersama yang ditentukan oleh field DT_SONAME daripada menggunakan nama file yang diberikan ke linker.

-saya

Lakukan tautan inkremental (sama dengan opsi-r).

-Ini nama

Saat membuat objek yang dapat dieksekusi atau dibagikan ELF, hubungi NAME ketika objek yang dapat dijalankan atau dibagikan dimuat, dengan mengatur DT_INIT ke alamat fungsi tersebut. Secara default, penghubung menggunakan "_init" sebagai fungsi untuk dipanggil.

-l arsip

--library = arsip

Tambahkan file arsip arsip ke daftar file untuk ditautkan. Pilihan ini dapat digunakan beberapa kali.ld akan mencari daftar jalurnya untuk kejadian "libarchive.a" untuk setiap arsip ditentukan.

Pada sistem yang mendukung pustaka bersama,ld mungkin juga mencari pustaka dengan ekstensi selain ".a". Khususnya, pada sistem ELF dan SunOS,ld akan mencari direktori untuk pustaka dengan ekstensi ".so" sebelum mencari yang memiliki ekstensi ".a". Dengan konvensi, ekstensi ".so" menunjukkan pustaka bersama.

Linker hanya akan mencari arsip satu kali, di lokasi yang ditentukan pada baris perintah. Jika arsip mendefinisikan simbol yang tidak terdefinisi di beberapa objek yang muncul sebelum arsip pada baris perintah, penghubung akan menyertakan file yang sesuai dari arsip. Namun, simbol yang tidak terdefinisi dalam objek yang muncul kemudian di baris perintah tidak akan menyebabkan linker untuk mencari arsip lagi.

Lihat-( pilihan untuk cara memaksa penaut untuk mencari arsip beberapa kali.

Anda dapat mencantumkan arsip yang sama beberapa kali pada baris perintah.

Jenis pencarian arsip ini adalah standar untuk penghubung Unix. Namun, jika Anda menggunakanld onAIX, perhatikan bahwa itu berbeda dari perilaku linker AIX.

-L searchdir

--library-path = searchdir

Tambahkan jalur searchdir ke daftar jalur ituld akan mencari pustaka arsip danld skrip kontrol. Anda dapat menggunakan opsi ini beberapa kali. Direktori dicari dalam urutan di mana mereka ditentukan pada baris perintah. Direktori yang ditentukan pada baris perintah dicari sebelum direktori default. Semua-L opsi berlaku untuk semua-l pilihan, terlepas dari urutan di mana opsi muncul.

Jika searchdir dimulai dengan "=", maka "=" akan digantikan oleh awalan sysroot , jalur yang ditentukan saat tautan dikonfigurasikan.

Set path standar dicari (tanpa ditentukan dengan-L) tergantung pada mode emulasi manald sedang digunakan, dan dalam beberapa kasus juga tentang bagaimana itu dikonfigurasi.

Jalur juga dapat ditentukan dalam skrip tautan dengan perintah "SEARCH_DIR". Direktori yang ditentukan dengan cara ini dicari pada titik di mana skrip linker muncul di baris perintah.

-m emulasi

Emulasikan emulasi penghubung. Anda dapat mencantumkan emulasi yang tersedia dengan--verbose atau-Vpilihan.

Jika itu-m pilihan tidak digunakan, emulasi diambil dari variabel lingkungan "LDEMULATION", jika itu didefinisikan.

Jika tidak, emulasi default tergantung pada bagaimana linker dikonfigurasi.

-M

--print-map

Cetak peta tautan ke output standar. Peta tautan memberikan informasi tentang tautan, termasuk yang berikut:

*

Di mana file objek dan simbol dipetakan ke dalam memori.

*

Bagaimana simbol umum dialokasikan.

*

Semua anggota arsip termasuk dalam tautan, dengan menyebutkan simbol yang menyebabkan anggota arsip dibawa masuk.

-n

- Nagagic

Matikan penyelarasan halaman bagian, dan tandai output sebagai "NMAGIC" jika memungkinkan.

-N

--omagik

Atur bagian teks dan data agar dapat dibaca dan ditulis. Juga, jangan halaman-sejajarkan segmen data, dan nonaktifkan menghubungkan terhadap pustaka bersama. Jika format output mendukung angka ajaib gaya Unix, tandai output sebagai "OMAGIC".

--no-omagic

Opsi ini meniadakan sebagian besar efek dari-N pilihan. Ini menetapkan bagian teks menjadi hanya-baca, dan memaksa segmen data untuk diselaraskan halaman. Catatan - opsi ini tidak memungkinkan menautkan ke pustaka bersama. Menggunakan-Bdynamic untuk ini.

-Hai keluaran

--output = keluaran

Menggunakan keluaran sebagai nama untuk program yang diproduksi olehld; jika opsi ini tidak ditentukan, namanya a.out digunakan secara default. Perintah skrip "OUTPUT" juga dapat menentukan nama file output.

-HAI tingkat

Jika tingkat adalah nilai numerik yang lebih besar dari nolld mengoptimalkan output. Ini mungkin membutuhkan waktu lebih lama dan oleh karena itu mungkin seharusnya hanya diaktifkan untuk biner akhir.

-q

--emit-relocs

Tinggalkan bagian relokasi dan konten dalam executable yang sepenuhnya terhubung. Analisis tautan pos dan alat pengoptimalan mungkin memerlukan informasi ini untuk melakukan modifikasi yang benar dari yang dapat dijalankan. Ini menghasilkan executable yang lebih besar.

Opsi ini saat ini hanya didukung pada platform ELF.

-r

- Relocateable

Hasilkan keluaran relocatable --- yaitu, menghasilkan file output yang pada gilirannya dapat berfungsi sebagai inputld. Ini sering disebut penautan sebagian . Sebagai efek samping, di lingkungan yang mendukung angka ajaib Unix standar, opsi ini juga menetapkan angka ajaib file output ke "OMAGIC". Jika opsi ini tidak ditentukan, file mutlak dihasilkan. Saat menautkan program C ++, opsi ini tidak akan selesaikan referensi ke konstruktor; untuk melakukan itu, gunakan-Ur.

Ketika file input tidak memiliki format yang sama dengan file output, penautan sebagian hanya didukung jika file input tidak berisi relokasi apa pun. Format output yang berbeda dapat memiliki pembatasan lebih lanjut; misalnya beberapa format "a.out" berbasis tidak mendukung penautan parsial dengan file input dalam format lain sama sekali.

Opsi ini melakukan hal yang sama-saya.

-R nama file

--just-symbols = nama file

Baca nama simbol dan alamatnya dari nama file , tetapi jangan relokasi atau memasukkannya ke dalam output. Ini memungkinkan file output Anda untuk merujuk secara simbolis ke lokasi absolut dari memori yang ditentukan dalam program lain. Anda dapat menggunakan opsi ini lebih dari satu kali.

Untuk kompatibilitas dengan penghubung ELF lainnya, jika-R pilihan diikuti oleh nama direktori, daripada nama file, itu dianggap sebagai-Perjalanan pilihan.

-s

--strip-semua

Hilangkan semua informasi simbol dari file output.

-S

--strip-debug

Hilangkan informasi simbol debugger (tetapi tidak semua simbol) dari file output.

-t

--jejak

Cetak nama file masukan sebagaild memproses mereka.

-T scriptfile

--script = scriptfile

Menggunakan scriptfile sebagai skrip tautan. Script ini menggantikanldskrip linker default (daripada menambahkannya), jadi commandfile harus menentukan semua yang diperlukan untuk menggambarkan file output. Jika scriptfile tidak ada di direktori saat ini, "ld" mencarinya di direktori yang ditentukan oleh yang sebelumnya-L pilihan. Banyak-T opsi terakumulasi.

-u simbol

--undefined = simbol

Memaksa simbol untuk dimasukkan dalam file output sebagai simbol yang tidak terdefinisi. Melakukan hal ini dapat, misalnya, memicu penautan modul tambahan dari pustaka standar.-u dapat diulang dengan argumen opsi yang berbeda untuk memasukkan simbol tidak terdefinisi tambahan. Opsi ini sama dengan perintah skrip tautan "EXTERN".

-Ur

Untuk apa pun selain program C ++, opsi ini setara dengan-r: itu menghasilkan relocatable output --- yaitu, file output yang pada gilirannya berfungsi sebagai inputld. Saat menautkan program C ++,-Ur tidak selesaikan referensi ke konstruktor, tidak seperti-r. Itu tidak berfungsi untuk digunakan-Ur pada file yang terkait dengan dirinya sendiri-Ur; setelah meja konstruktor telah dibangun, itu tidak dapat ditambahkan. Menggunakan-Ur hanya untuk tautan parsial terakhir, dan-r untuk yang lain.

--unique = BAGIAN

Menciptakan bagian output terpisah untuk setiap bagian masukan yang cocok BAGIAN , atau jika wildcard opsional BAGIAN argumen hilang, untuk setiap bagian masukan anak yatim. Bagian anak yatim adalah bagian yang tidak disebutkan secara khusus dalam skrip tautan. Anda dapat menggunakan opsi ini beberapa kali pada baris perintah; Ini mencegah penggabungan normal bagian input dengan nama yang sama, mengesampingkan tugas bagian keluaran dalam skrip tautan.

-v

--versi

-V

Tampilkan nomor versi untukld. Itu-V opsi juga mencantumkan emulasi yang didukung.

-x

--discard-semua

Hapus semua simbol lokal.

-X

--discard-penduduk setempat

Hapus semua simbol lokal sementara. Untuk sebagian besar target, ini semua simbol lokal yang namanya dimulaiL.

-y simbol

--trace-simbol = simbol

Cetak nama setiap file yang tertaut di mana simbol muncul. Pilihan ini dapat diberikan beberapa kali. Pada banyak sistem perlu untuk menambahkan garis bawah.

Opsi ini berguna ketika Anda memiliki simbol yang tidak terdefinisi di tautan Anda tetapi tidak tahu dari mana referensi itu berasal.

-Y jalan

Menambahkan jalan ke jalur pencarian perpustakaan default. Opsi ini ada untuk kompatibilitas Solaris.

-z kata kunci

Kata kunci yang dikenal adalah "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "sekarang", "origin", "combreloc", "nocombreloc" dan "nocopyreloc ". Kata kunci lainnya diabaikan untuk kompatibilitas Solaris. "initfirst" menandai objek yang akan diinisialisasi terlebih dahulu pada waktu proses sebelum objek lain."Interpose" menandai objek yang tabel simbolnya bergantian sebelum semua simbol tetapi dieksekusi utama. "loadfltr" menandai objek yang filtanya diproses segera saat runtime. "nodefaultlib" menandai objek yang mencari dependensi objek ini akan mengabaikan jalur penelusuran perpustakaan default apa pun. "nodelete" menandai objek seharusnya tidak diturunkan saat runtime. "nodlopen" menandai objek tidak tersedia untuk "dlopen". "nodump" menandai objek tidak dapat dibuang oleh "dldump". "sekarang" menandai objek dengan non-malas runtime binding. "origin" menandai objek mungkin mengandung $ ASAL. "Def" tidak mengizinkan simbol yang tidak terdefinisi. "muldefs" memungkinkan beberapa definisi. "combreloc" menggabungkan beberapa bagian reloc dan mengurutkan mereka untuk membuat pencarian simbol dinamis mungkin.

"nocombreloc" menonaktifkan penggabungan beberapa bagian relokasi. "nocopyreloc" menonaktifkan produksi copy relocs.

-( arsip -)

--mulai grup arsip --end-group

Itu arsip harus berupa daftar file arsip. Mereka mungkin berupa nama file yang eksplisit, atau-lpilihan.

Arsip yang ditentukan dicari berulang kali hingga tidak ada referensi baru yang tidak ditentukan yang dibuat. Biasanya, arsip hanya dicari satu kali dalam urutan yang ditentukan pada baris perintah. Jika simbol dalam arsip itu diperlukan untuk menyelesaikan simbol yang tidak ditentukan yang dirujuk oleh objek dalam arsip yang muncul kemudian di baris perintah, penaut tidak akan dapat menyelesaikan referensi itu. Dengan mengelompokkan arsip, mereka semua dicari berulang kali hingga semua referensi yang memungkinkan diselesaikan.

Menggunakan opsi ini memiliki biaya kinerja yang signifikan. Yang terbaik adalah menggunakannya hanya ketika ada referensi melingkar yang tidak dapat dihindari antara dua atau lebih arsip.

- menerima-tidak dikenal-masukan-lengkungan

--no-accept-unknown-input-arch

Memberi tahu penaut untuk menerima file masukan yang arsitekturnya tidak dapat dikenali. Asumsinya adalah bahwa pengguna tahu apa yang mereka lakukan dan sengaja ingin menghubungkan dalam file input yang tidak dikenal ini. Ini adalah perilaku default dari tautan, sebelum rilis 2.14. Perilaku default dari rilis 2.14 dan seterusnya adalah menolak file input seperti itu, dan seterusnya- menerima-tidak dikenal-masukan-lengkungan opsi telah ditambahkan untuk mengembalikan perilaku lama.

-menegaskan kata kunci

Opsi ini diabaikan untuk kompatibilitas SunOS.

-Bdynamic

-dy

-call_shared

Tautan dengan pustaka dinamis. Ini hanya berarti pada platform yang didukung perpustakaan bersama. Opsi ini biasanya merupakan default pada platform tersebut. Variasi yang berbeda dari opsi ini adalah untuk kompatibilitas dengan berbagai sistem. Anda dapat menggunakan opsi ini beberapa kali pada baris perintah: itu mempengaruhi penelusuran perpustakaan-l opsi yang mengikutinya.

-Bgroup

Setel bendera "DF_1_GROUP" di entri "DT_FLAGS_1" di bagian dinamis. Hal ini menyebabkan linker runtime untuk menangani pencarian di objek ini dan dependensinya hanya dilakukan di dalam grup.--no-undefined tersirat. Opsi ini hanya berarti pada platform ELF yang mendukung pustaka bersama.

-Bstatic

-dn

-non_shared

-statis

Jangan tautkan ke pustaka bersama. Ini hanya berarti pada platform yang didukung perpustakaan bersama. Variasi yang berbeda dari opsi ini adalah untuk kompatibilitas dengan berbagai sistem. Anda dapat menggunakan opsi ini beberapa kali pada baris perintah: itu mempengaruhi penelusuran perpustakaan-l opsi yang mengikutinya.

-Bsymbolic

Saat membuat pustaka bersama, ikat referensi ke simbol global ke definisi dalam pustaka bersama, jika ada. Biasanya, adalah mungkin untuk program yang terkait dengan perpustakaan bersama untuk mengesampingkan definisi dalam pustaka bersama. Opsi ini hanya berarti pada ELFplatform yang mendukung pustaka bersama.

--Check-bagian

--tidak ada-periksa-bagian

Minta tautannya tidak untuk memeriksa alamat bagian setelah mereka ditugaskan untuk melihat apakah ada tumpang tindih. Biasanya linker akan melakukan pemeriksaan ini, dan jika ditemukan ada tumpang tindih maka akan menghasilkan pesan kesalahan yang sesuai. Linker tidak tahu tentang, dan memang membuat tunjangan untuk bagian dalam overlay. Perilaku default dapat dipulihkan dengan menggunakan saklar baris perintah--Check-bagian.

--cref

Output tabel referensi silang. Jika file peta tautan dibuat, tabel referensi silang dicetak ke file peta. Jika tidak, dicetak pada output standar.

Format tabel sengaja dibuat sederhana, sehingga mudah diproses oleh skrip jika perlu. Simbol tersebut dicetak, diurutkan berdasarkan nama. Untuk setiap simbol, daftar nama file diberikan. Jika simbol didefinisikan, file pertama yang terdaftar adalah lokasi definisi. Sisa file berisi referensi ke simbol.

--no-define-common

Opsi ini menghambat penugasan alamat ke simbol umum. Perintah skrip "INHIBIT_COMMON_ALLOCATION" memiliki efek yang sama.

Itu--no-define-common pilihan memungkinkan decoupling keputusan untuk menetapkan alamat ke simbol umum dari pilihan jenis file output; jika tidak, tipe gaya output yang tidak dapat Relocatable menetapkan alamat ke simbol-simbol umum. Menggunakan--no-define-common memungkinkan simbol-simbol umum yang direferensikan dari pustaka bersama untuk diberikan alamat hanya dalam program utama. Ini menghilangkan ruang duplikat yang tidak digunakan dalam pustaka bersama, dan juga mencegah kemungkinan kebingungan untuk menyelesaikan ke duplikat yang salah ketika ada banyak modul dinamis dengan jalur pencarian khusus untuk resolusi simbol runtime.

--defsym simbol = ekspresi

Buat simbol global dalam file output, yang berisi alamat absolut yang diberikan oleh ekspresi . Anda dapat menggunakan opsi ini sebanyak yang diperlukan untuk menentukan beberapa simbol di baris perintah. Suatu bentuk aritmatika terbatas didukung untuk ekspresi dalam konteks ini: Anda dapat memberikan konstanta heksadesimal atau nama simbol yang ada, atau gunakan "+" dan "-" untuk menambah atau mengurangi konstanta atau simbol heksadesimal. Jika Anda membutuhkan ekspresi yang lebih rumit, pertimbangkan untuk menggunakan bahasa perintah tautan dari skrip. catatan: seharusnya tidak ada ruang kosong di antara keduanya simbol , tanda sama dengan (``=''), dan ekspresi .

--deflangle = gaya

--no-demangle

Opsi-opsi ini mengontrol apakah akan mencabut nama simbol dalam pesan kesalahan dan keluaran lainnya. Ketika linker diperintahkan untuk demangle, ia mencoba untuk menyajikan nama simbol dengan cara yang dapat dibaca: itu strip yang menggarisbawahi garis bawah jika mereka digunakan oleh format file objek, dan mengkonversi C + + nama simbol melengkung ke nama yang dapat dibaca pengguna. Kompiler yang berbeda memiliki gaya pengawetan yang berbeda. Argumen gaya demassling opsional dapat digunakan untuk memilih gaya demangling yang sesuai untuk compiler Anda. Linker akan dihapus secara default kecuali variabel lingkunganCOLLECT_NO_DEMANGLE diatur. Opsi ini dapat digunakan untuk mengganti default.

--dinamis-penghubung mengajukan

Setel nama tautan dinamis. Ini hanya bermakna ketika menghasilkan ELIC executable yang terhubung secara dinamis. Linker dinamis default biasanya benar; jangan gunakan ini kecuali Anda tahu apa yang Anda lakukan.

--embedded-relocs

Pilihan ini hanya bermakna ketika menghubungkan kode PIC tertanam MIPS, yang dihasilkan oleh opsi -membedded-pic ke kompilator GNU dan assembler. Ini menyebabkan linker untuk membuat tabel yang dapat digunakan saat runtime untuk merelokasi data apa pun yang diinisialisasi secara statis ke nilai penunjuk. Lihat kode di testsuite / ld-empic untuk detailnya.

- peringatan fatal

Perlakukan semua peringatan sebagai kesalahan.

--force-exe-suffix

Pastikan bahwa file output memiliki akhiran .exe.

Jika file output yang terhubung sepenuhnya berhasil tidak memiliki akhiran ".exe" atau ".dll", opsi ini memaksa penaut untuk menyalin file keluaran ke salah satu dari nama yang sama dengan akhiran ".exe". Opsi ini berguna ketika menggunakan makefile Unix yang tidak dimodifikasi pada host Microsoft Windows, karena beberapa versi Windows tidak akan menjalankan gambar kecuali akhiran ".exe".

--no-gc-sections

--gc-sections

Aktifkan pengumpulan sampah dari bagian masukan yang tidak digunakan. Ini diabaikan pada target yang tidak mendukung opsi ini. Opsi ini tidak kompatibel dengan-r, atau seharusnya digunakan dengan penautan dinamis. Perilaku default (tidak melakukan pengumpulan sampah ini) dapat dipulihkan dengan menentukan--no-gc-sections pada baris perintah.

--membantu

Cetak ringkasan opsi baris perintah pada keluaran standar dan keluar.

--target-help

Cetak ringkasan semua opsi spesifik target pada output standar dan keluar.

-Peta mapfile

Cetak peta tautan ke file mapfile . Lihat uraian dari-M pilihan, di atas.

--no-keep-memory

ld biasanya mengoptimalkan untuk mempercepat penggunaan memori dengan caching tabel simbol dari file input di memori. Opsi ini memberi tahuld untuk mengoptimalkan penggunaan memori, dengan membaca ulang tabel simbol seperlunya. Ini mungkin diperlukan jikald kehabisan ruang memori saat menautkan eksekusi besar.

--no-undefined

-z def

Biasanya saat membuat pustaka bersama non-simbolik, simbol yang tidak ditentukan diizinkan dan dibiarkan untuk diselesaikan oleh pemuat waktu proses. Opsi ini tidak mengizinkan simbol yang tidak terdefinisi seperti itu.

--allow-multiple-definition

-z muldefs

Biasanya ketika simbol didefinisikan beberapa kali, penaut akan melaporkan kesalahan fatal. Opsi-opsi ini memungkinkan beberapa definisi dan definisi pertama akan digunakan.

--allow-shlib-undefined

Izinkan simbol yang tidak terdefinisi dalam objek bersama bahkan ketika --no-undefined ditetapkan. Hasil akhirnya adalah simbol yang tidak terdefinisi dalam objek biasa akan tetap memicu kesalahan, tetapi simbol yang tidak didefinisikan dalam objek bersama akan diabaikan. Implementasi no_undefined membuat asumsi bahwa linker runtime akan tersedak pada simbol yang tidak terdefinisi. Namun setidaknya ada satu sistem (BeOS) di mana simbol yang tidak didefinisikan dalam pustaka bersama adalah normal karena kernel menambalnya pada waktu pemuatan untuk memilih fungsi mana yang paling sesuai untuk arsitektur saat ini. YAITU. dinamis memilih fungsi memset yang sesuai. Rupanya itu juga normal untuk pustaka yang dibagikan HPPA untuk memiliki simbol yang tidak terdefinisi.

--no-undefined-version

Biasanya ketika simbol memiliki versi tidak terdefinisi, linker akan mengabaikannya. Pilihan ini melarang simbol dengan versi tidak terdefinisi dan kesalahan fatal akan dikeluarkan sebagai gantinya.

--no-warn-mismatch

Biasanyald akan memberikan kesalahan jika Anda mencoba untuk menghubungkan bersama-sama file input yang tidak sesuai untuk beberapa alasan, mungkin karena mereka telah dikompilasi untuk prosesor yang berbeda atau untuk berbagai endianness yang berbeda. Opsi ini memberi tahuld bahwa itu harus diam-diam memungkinkan kesalahan yang mungkin seperti itu. Opsi ini hanya boleh digunakan dengan hati-hati, jika Anda telah melakukan beberapa tindakan khusus yang memastikan bahwa kesalahan tautan tidak pantas.

--no-whole-archive

Matikan efek dari- keseluruhan arsip pilihan untuk file arsip selanjutnya.

--noinhibit-exec

Simpan file output yang dapat dieksekusi kapan saja masih bisa digunakan.Biasanya, penaut tidak akan menghasilkan file output jika menemukan kesalahan selama proses tautan; itu keluar tanpa menulis file output ketika mengeluarkan kesalahan apa pun.

-nostdlib

Hanya mencari direktori perpustakaan yang secara eksplisit ditentukan pada baris perintah. Direktori perpustakaan yang ditentukan dalam skrip tautan (termasuk skrip tautan yang ditentukan pada baris perintah) diabaikan.

--oformat format output

ld dapat dikonfigurasi untuk mendukung lebih dari satu jenis file objek. Jika Andald dikonfigurasi dengan cara ini, Anda dapat menggunakan--oformat opsi untuk menentukan format biner untuk file objek output. Bahkan ketikald dikonfigurasi untuk mendukung format objek alternatif, Anda biasanya tidak perlu menentukan ini, karenald harus dikonfigurasi untuk menghasilkan sebagai format output default format yang paling umum pada setiap mesin. format output adalah string teks, nama format tertentu yang didukung oleh pustaka BFD. (Anda dapat mencantumkan format biner yang tersedia denganobjdump -i.) Perintah skrip "OUTPUT_FORMAT" juga dapat menentukan format output, tetapi opsi ini menimpanya.

-Qmagic

Opsi ini diabaikan untuk kompatibilitas Linux.

-Qy

Pilihan ini diabaikan untuk kompatibilitas SVR4.

--bersantai

Pilihan dengan efek yang tergantung pada mesin. Opsi ini hanya didukung pada beberapa target.

Pada beberapa platform,--bersantai opsi melakukan pengoptimalan global yang menjadi mungkin ketika penaut menyelesaikan pengalamatan dalam program, seperti mode alamat santai dan mensintesis instruksi baru dalam file objek keluaran.

Pada beberapa platform, pengoptimalan global waktu tautan ini dapat membuat debugging simbolis dari hasil yang tidak dapat dieksekusi. Hal ini dikenal sebagai kasus untuk keluarga prosesor Matsushita MN10200and MN10300.

Pada platform di mana ini tidak didukung,--bersantai diterima, tetapi diabaikan.

--retain-simbol-file nama file

Menahan hanya simbol-simbol yang tercantum dalam file nama file , membuang yang lainnya. nama file hanyalah sebuah file datar, dengan satu nama simbol per baris. Opsi ini sangat berguna dalam lingkungan (seperti VxWorks) di mana tabel simbol global yang besar terakumulasi secara bertahap, untuk menghemat memori run-time.

--retain-simbol-file tidak tidak buang simbol yang tidak terdefinisi, atau simbol yang diperlukan untuk relokasi.

Anda hanya dapat menentukan--retain-simbol-file sekali di baris perintah. Ini menimpa-s dan-S.

-Perjalanan dir

Tambahkan direktori ke jalur pencarian perpustakaan runtime. Ini digunakan saat menautkan ELFexecutable dengan objek yang dibagikan. Semua-Perjalanan argumen digabung dan diteruskan ke linker runtime, yang menggunakannya untuk mencari objek bersama saat runtime. Itu-Perjalanan opsi juga digunakan saat mencari objek bersama yang dibutuhkan oleh objek bersama yang secara eksplisit disertakan dalam tautan; lihat uraian tentang-rpath-link pilihan. Jika-Perjalanan tidak digunakan ketika menghubungkan ELF yang dapat dieksekusi, isi variabel lingkungan "LD_RUN_PATH" akan digunakan jika sudah didefinisikan.

Itu-Perjalanan pilihan juga dapat digunakan pada SunOS. Secara default, pada SunOS, tautan akan membentuk patch pencarian runtime dari semua-L opsi itu diberikan. Jika sebuah-Perjalanan pilihan digunakan, jalur pencarian runtime akan dibentuk secara eksklusif menggunakan-Perjalanan pilihan, mengabaikan-Lpilihan. Ini bisa berguna saat menggunakan gcc, yang menambah banyak-L opsi yang mungkin pada sistem file yang dipasang pada NFS.

Untuk kompatibilitas dengan penghubung ELF lainnya, jika-R pilihan diikuti oleh nama direktori, daripada nama file, itu dianggap sebagai-Perjalanan pilihan.

-rpath-link DIR

Saat menggunakan ELF atau SunOS, satu pustaka bersama mungkin memerlukan yang lain. Ini terjadi ketika tautan "ld -shared" menyertakan pustaka bersama sebagai salah satu file masukan.

Ketika penaut menemui ketergantungan seperti itu ketika melakukan tautan yang tidak dibagikan, tidak dapat dipindah-pindah, secara otomatis akan mencoba mencari pustaka bersama yang diperlukan dan memasukkannya ke dalam tautan, jika tidak dicantumkan secara eksplisit. Dalam kasus seperti itu, the-rpath-link opsi menentukan set pertama direktori untuk mencari. Itu-rpath-link opsi dapat menentukan urutan nama direktori baik dengan menentukan daftar nama yang dipisahkan oleh titik dua, atau dengan muncul beberapa kali.

Opsi ini harus digunakan dengan hati-hati karena mengesampingkan jalur pencarian yang mungkin sulit dikompilasi menjadi pustaka bersama. Dalam kasus seperti itu adalah mungkin untuk menggunakan jalur pencarian yang berbeda secara tidak sengaja daripada yang dilakukan oleh linker runtime.

Linker menggunakan jalur pencarian berikut untuk mencari pustaka bersama yang dibutuhkan.

1.

Semua direktori yang ditentukan oleh-rpath-link pilihan.

2.

Semua direktori yang ditentukan oleh-Perjalanan pilihan. Perbedaan antara-Perjalanan dan-rpath-link adalah direktori yang ditentukan oleh-Perjalanan opsi termasuk dalam dieksekusi dan digunakan saat runtime, sedangkan-rpath-link opsi hanya efektif pada waktu tautan. Ini hanya untuk tautan asli.

3.

Pada sistem ELF, jika-Perjalanan dan opsi "rpath-link" tidak digunakan, cari konten variabel lingkungan "LD_RUN_PATH". Ini hanya untuk tautan asli.

4.

Pada SunOS, jika-Perjalanan opsi tidak digunakan, cari direktori yang ditentukan menggunakan-L pilihan.

5.

Untuk penaut asli, isi variabel lingkungan "LD_LIBRARY_PATH".

6.

Untuk tautan ELF asli, direktori dalam "DT_RUNPATH" atau "DT_RPATH" dari pustaka bersama dicari untuk pustaka bersama yang dibutuhkan olehnya.Entri "DT_RPATH" diabaikan jika entri "DT_RUNPATH" ada.

7.

Direktori default, biasanya / lib dan / usr / lib .

8.

Untuk penaut yang asli pada sistem ELF, jika file tersebut /etc/ld.so.conf ada, daftar direktori yang ditemukan di file itu.

Jika pustaka bersama yang diperlukan tidak ditemukan, penaut akan mengeluarkan peringatan dan melanjutkan dengan tautan.

-bersama

-Bagi

Buat pustaka bersama. Saat ini hanya didukung pada platform ELF, XCOFF, dan SunOS. Pada SunOS, tautan akan secara otomatis membuat pustaka bersama jika-e opsi tidak digunakan dan ada simbol yang tidak ditentukan di tautan.

--saham umum

Opsi ini memberi tahuld untuk mengurutkan simbol umum berdasarkan ukuran ketika menempatkannya di bagian keluaran yang sesuai. Pertama-tama datang semua simbol satu byte, lalu semua dua byte, lalu semua empat byte, dan kemudian yang lainnya. Ini untuk mencegah celah antara simbol karena kendala penjajaran.

--split-oleh-file ukuran

Mirip dengan--split-oleh-relokasi tetapi buat bagian keluaran baru untuk setiap file input kapan ukuran tercapai. ukuran default ke ukuran 1 jika tidak diberikan.

--split-by-reloc menghitung

Mencoba untuk membuat bagian tambahan dalam file output sehingga tidak ada bagian output tunggal dalam file yang berisi lebih dari menghitung relokasi. Ini berguna ketika menghasilkan file relokasi besar untuk diunduh ke kernel waktu nyata tertentu dengan format file objek COFF; sejak COFFcannot mewakili lebih dari 65535 relokasi dalam satu bagian. Perhatikan bahwa ini akan gagal bekerja dengan format file objek yang tidak mendukung bagian acak. Linker tidak akan membagi bagian input individual untuk redistribusi, jadi jika satu bagian input berisi lebih dari menghitung Relokasi satu bagian keluaran akan berisi banyak relokasi. menghitung default ke nilai 32768.

--stats

Hitung dan tampilkan statistik tentang pengoperasian tautan, seperti waktu eksekusi dan penggunaan memori.

--traditional-format

Untuk beberapa target, output darild berbeda dalam beberapa hal dari output dari beberapa tautan yang ada. Permintaan switch inild untuk menggunakan format tradisional sebagai gantinya.

Misalnya, di SunOS,ld menggabungkan entri duplikat dalam tabel string simbol. Ini dapat mengurangi ukuran file output dengan informasi debug lengkap lebih dari 30 persen. Sayangnya, program SunOS "dbx" tidak dapat membaca program yang dihasilkan ("gdb" tidak memiliki masalah). Itu--traditional-format switch memberitahuld untuk tidak menggabungkan entri duplikat.

--section-start nama bagian = org

Cari bagian dalam file output di alamat absolut yang diberikan oleh org . Anda dapat menggunakan opsi ini sebanyak yang diperlukan untuk menemukan beberapa bagian di baris perintah. org harus berupa bilangan bulat heksadesimal tunggal; untuk kompatibilitas dengan penghubung lain, Anda dapat menghilangkan awalannya0x biasanya terkait dengan nilai heksadesimal. catatan: seharusnya tidak ada ruang kosong di antara keduanya nama bagian , tanda sama dengan (``=''), dan org .

-Tbss org

-Tdata org

-Teks org

Menggunakan org sebagai alamat awal untuk --- masing-masing --- "bss", "data", atau segmen "teks" dari file output. org harus berupa bilangan bulat heksadesimal tunggal; untuk kompatibilitas dengan penghubung lain, Anda dapat menghilangkan awalannya0x biasanya terkait dengan nilai heksadesimal.

--dll-verbose

--verbose

Tampilkan nomor versi untukld dan mencantumkan emulasi tautan yang didukung. Tampilkan file input mana yang dapat dan tidak dapat dibuka. Tampilkan skrip tautan yang digunakan oleh penaut.

--version-script = scriptfile versi

Tentukan nama skrip versi ke penaut. Ini biasanya digunakan saat membuat pustaka bersama untuk menentukan informasi tambahan tentang versi heirarki untuk pustaka yang dibuat. Opsi ini hanya berarti pada platform ELF yang mendukung pustaka bersama.

--pering-umum

Peringatkan ketika simbol umum dikombinasikan dengan simbol umum lainnya atau dengan definisi simbol. Tautan Unix memungkinkan praktik yang agak ceroboh ini, tetapi tautan pada beberapa sistem operasi lain tidak. Opsi ini memungkinkan Anda menemukan masalah potensial dari menggabungkan simbol global. Sayangnya, beberapa pustaka C menggunakan praktik ini, jadi Anda mungkin mendapatkan beberapa peringatan tentang simbol di pustaka serta di program Anda.

Ada tiga jenis simbol global, diilustrasikan di sini oleh contoh C:

int i = 1;

Definisi, yang berjalan di bagian data diinisialisasi dari file output.

extern int i;

Referensi tidak terdefinisi, yang tidak mengalokasikan ruang. Harus ada definisi atau simbol umum untuk variabel di suatu tempat.

int i;

Simbol umum. Jika hanya ada (satu atau lebih) simbol umum untuk variabel, ia akan masuk ke area data yang tidak terinisialisasi dari file output. Linker menggabungkan beberapa simbol umum untuk variabel yang sama ke dalam simbol tunggal. Jika ukurannya berbeda, ia memilih ukuran terbesar. Linker mengubah simbol umum menjadi sebuah deklarasi, jika ada definisi dari variabel yang sama.

Itu--pering-umum pilihan dapat menghasilkan lima jenis peringatan. Setiap peringatan terdiri dari sepasang garis: yang pertama menggambarkan simbol yang baru saja ditemui, dan yang kedua menggambarkan simbol sebelumnya yang dijumpai dengan nama yang sama. Satu atau keduanya dari dua simbol akan menjadi simbol umum.

1.

Mengubah simbol umum menjadi referensi, karena sudah ada definisi untuk simbol.

(

): peringatan: common of `'Ditimpa oleh definisi (
): peringatan: didefinisikan di sini

2.

Mengubah simbol umum menjadi referensi, karena definisi simbol di kemudian hari ditemukan. Ini sama dengan kasus sebelumnya, kecuali bahwa simbol-simbol itu ditemui dalam urutan yang berbeda.

(

): peringatan: definisi `'mengesampingkan umum (
): peringatan: umum ada di sini

3.

Menggabungkan simbol umum dengan simbol umum berukuran sama sebelumnya.

(

): peringatan: multiple common of `' (
): peringatan: sebelumnya umum ada di sini

4.

Menggabungkan simbol umum dengan simbol umum yang lebih besar sebelumnya.

(

): peringatan: common of `'Ditimpa oleh umum yang lebih besar (
): peringatan: lebih umum ada di sini

5.

Menggabungkan simbol umum dengan simbol umum yang lebih kecil sebelumnya. Ini sama dengan kasus sebelumnya, kecuali bahwa simbol-simbol itu ditemui dalam urutan yang berbeda.

(

): peringatan: common of `'Mengganti common yang lebih kecil (
): peringatan: lebih kecil umum ada di sini

--pencari-konstruktor

Peringatkan jika ada konstruktor global yang digunakan. Ini hanya berguna untuk beberapa format file objek. Untuk format seperti COFF atau ELF, penghubung tidak dapat mendeteksi penggunaan konstruktor global.

--swarn-multiple-gp

Peringatkan jika beberapa nilai penunjuk global diperlukan dalam file keluaran. Ini hanya bermakna untuk prosesor tertentu, seperti Alpha. Secara khusus, beberapa prosesor menempatkan konstanta bernilai tinggi di bagian khusus. Sebuah register khusus (pointer global) menunjuk ke tengah bagian ini, sehingga konstanta dapat dimuat secara efisien melalui mode pengalamatan daftar basis-register. Karena offset dalam mode relatif register-dasar adalah tetap dan relatif kecil (misalnya, 16 bit), ini membatasi ukuran maksimum dari kolam konstan. Dengan demikian, dalam program besar, seringkali perlu menggunakan beberapa nilai penunjuk global untuk dapat mengatasi semua kemungkinan konstanta. Opsi ini menyebabkan peringatan dikeluarkan setiap kali kasus ini terjadi.

- ingat sekali

Hanya memperingatkan satu kali untuk setiap simbol yang tidak terdefinisi, daripada sekali per modul yang merujuk padanya.

--warn-section-align

Peringatkan jika alamat bagian output diubah karena keselarasan. Biasanya, penjajaran akan diatur oleh bagian input. Alamat hanya akan diubah jika tidak secara eksplisit ditentukan; yaitu, jika perintah "SECTIONS" tidak menentukan alamat awal untuk bagian tersebut.

- keseluruhan arsip

Untuk setiap arsip yang disebutkan pada baris perintah setelah- keseluruhan arsip pilihan, termasuk setiap file objek dalam arsip di tautan, daripada mencari arsip untuk file objek yang diperlukan. Ini biasanya digunakan untuk mengubah file arsip menjadi pustaka bersama, yang memaksa setiap objek dimasukkan dalam pustaka bersama yang dihasilkan. Opsi ini dapat digunakan lebih dari satu kali.

Dua catatan saat menggunakan opsi ini dari gcc: Pertama, gcc tidak tahu tentang opsi ini, jadi Anda harus menggunakannya-Lembut, seluruh arsip. Kedua, jangan lupa untuk menggunakannya-Dengan, -tidak utuh-arsipsetelah daftar arsip Anda, karena gcc akan menambahkan daftar arsipnya sendiri ke tautan Anda dan Anda mungkin tidak ingin bendera ini memengaruhi mereka juga.

--membungkus simbol

Gunakan fungsi pembungkus untuk simbol . Referensi apa pun yang tidak terdefinisi simbol akan diatasi menjadi "__ wrap_symbol". Referensi apa pun yang tidak jelas untuk "__real_symbol" akan diselesaikan simbol .

Ini dapat digunakan untuk menyediakan pembungkus untuk fungsi sistem. Fungsi bungkus harus disebut "__wrap_symbol". Jika ingin memanggil fungsi sistem, ia harus memanggil "__ real_symbol".

Berikut adalah contoh sepele:

void * __wrap_malloc (int c) {printf ("malloc dipanggil dengan% ld n", c); kembalikan __real_malloc (c); }

Jika Anda menghubungkan kode lain dengan file ini menggunakan--wrap malloc, maka semua panggilan ke "malloc" akan memanggil fungsi "__wrap_malloc" sebagai gantinya. Panggilan ke "__real_malloc" di "__wrap_malloc" akan memanggil fungsi "malloc" yang sesungguhnya.

Anda mungkin ingin menyediakan fungsi "__real_malloc" juga, sehingga tautan tanpa--membungkus pilihan akan berhasil. Jika Anda melakukan ini, Anda tidak harus meletakkan definisi "__ real_malloc" dalam file yang sama dengan "__wrap_malloc"; jika Anda melakukannya, assembler dapat menyelesaikan panggilan sebelum linker memiliki kesempatan untuk membungkusnya ke "malloc".

--enable-new-dtags

--disable-new-dtags

Tautan ini dapat membuat tag dinamis baru di ELF. Tetapi sistem ELF yang lebih tua mungkin tidak memahaminya. Jika Anda tentukan--enable-new-dtags, tag dinamis akan dibuat sesuai kebutuhan. Jika Anda tentukan--disable-new-dtags, tidak ada tag dinamis baru yang akan dibuat. Secara default, tag dinamis baru tidak dibuat. Perhatikan bahwa opsi tersebut hanya tersedia untuk sistem FORCE.

Linker i386 PE mendukung-bersama pilihan, yang menyebabkan output menjadi perpustakaan yang terhubung secara dinamis (DLL) bukannya dieksekusi normal. Anda harus memberi nama output "* .dll" saat Anda menggunakan opsi ini. Selain itu, linker sepenuhnya mendukung file "* .def" standar, yang dapat ditentukan pada baris perintah linker seperti file objek (sebenarnya, harus mendahului arsip yang mengekspor simbol dari, untuk memastikan bahwa mereka dapat terhubung, sama seperti file objek normal).

Selain opsi yang umum untuk semua target, linker i386 PE mendukung opsi baris perintah tambahan yang khusus untuk target PE i386. Opsi yang mengambil nilai dapat dipisahkan dari nilainya dengan spasi atau tanda sama dengan.

--add-stdcall-alias

Jika diberikan, simbol dengan sufiks stdcall (@ nn ) akan diekspor apa adanya dan juga dengan akhiran dilucuti.

--base-file mengajukan

Menggunakan mengajukan sebagai nama file untuk menyimpan alamat dasar dari semua relokasi yang diperlukan untuk menghasilkan DLL dengan dlltool .

--dll

Buat DLL alih-alih eksekusi reguler. Anda juga dapat menggunakan-bersama atau tentukan "PERPUSTAKAAN" dalam file ".def" yang diberikan.

--enable-stdcall-fixup

--disable-stdcall-fixup

Jika tautan menemukan simbol yang tidak dapat diselesaikan, tautan akan berusaha melakukan `` menghubungkan fuzzy '' dengan mencari simbol lain yang didefinisikan yang hanya berbeda dalam format nama simbol (cdecl vs stdcall) dan akan menyelesaikan simbol tersebut dengan menautkan untuk pertandingan. Misalnya, simbol undefined "_foo" mungkin terkait dengan fungsi "_foo @ 12", atau simbol tak terdefinisi "_bar @ 16" mungkin terkait dengan fungsi "_bar". Ketika linker melakukan ini, itu mencetak peringatan, karena biasanya seharusnya gagal untuk menghubungkan, tetapi kadang-kadang mengimpor perpustakaan yang dihasilkan dari dll pihak ketiga mungkin perlu fitur ini dapat digunakan. Jika Anda tentukan--enable-stdcall-fixup, fitur ini sepenuhnya diaktifkan dan peringatan tidak dicetak. Jika Anda tentukan--disable-stdcall-fixup, fitur ini dinonaktifkan dan ketidakcocokan semacam itu dianggap sebagai kesalahan.

--ekspor-semua-simbol

Jika diberikan, semua simbol global dalam objek yang digunakan untuk membangun DLL akan diekspor oleh DLL. Perhatikan bahwa ini adalah default jika tidak akan ada simbol yang diekspor. Ketika simbol secara eksplisit diekspor melalui file DEF atau secara implisit diekspor melalui atribut fungsi, defaultnya adalah tidak mengekspor apa pun kecuali opsi ini diberikan. Perhatikan bahwa simbol "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", dan "impure_ptr" tidak akan diekspor secara otomatis. Juga, simbol yang diimpor dari DLL lain tidak akan diekspor kembali, begitu pula simbol yang menentukan tata letak internal DLL seperti yang diawali dengan "_head_" atau diakhiri dengan "_iname". Selain itu, tidak ada simbol dari "libgcc", "libstd ++", "libmingw32", atau "crtX.o" akan diekspor. Simbol yang namanya dimulai dengan "__rtti_" atau "__builtin_" tidak akan diekspor, untuk membantu dengan C ++ DLL. Akhirnya, ada daftar panjang simbol cygwin-private yang tidak diekspor (jelas, ini berlaku ketika membangun DLL untuk target cygwin).

Ini cygwin-tidak termasuk: "_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 ", dan" environ ".

--exclude-simbol simbol , simbol ,…

Menentukan daftar simbol yang seharusnya tidak diekspor secara otomatis. Nama simbol dapat dibatasi oleh koma atau titik dua.

--exclude-libs lib , lib ,…

Menentukan daftar pustaka arsip dari simbol mana yang seharusnya tidak diekspor secara otomatis. Nama-nama perpustakaan dapat dibatasi oleh koma atau titik dua. Menentukan "--exclude-libs ALL" mengecualikan simbol di semua pustaka arsip dari ekspor otomatis. Simbol yang secara eksplisit tercantum dalam file .def masih diekspor, terlepas dari opsi ini.

--file-alignment

Tentukan perataan file. Bagian dalam file akan selalu dimulai pada file offset yang merupakan kelipatan dari nomor ini. Ini secara default ke 512.

--tumpukan cadangan

--tumpukan cadangan , melakukan

Tentukan jumlah memori untuk cadangan (dan opsional) untuk digunakan sebagai tumpukan untuk program ini. Standarnya adalah 1Mb cadangan, 4K berkomitmen.

--gambar dasar ni