Ini adalah perintah arm-linux-gnueabi-ld yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
ld - Penghubung GNU
RINGKASAN
aku [Pilihan] file objek ...
DESKRIPSI
ld menggabungkan sejumlah objek dan file arsip, memindahkan datanya dan mengikat simbol
referensi. Biasanya langkah terakhir dalam mengkompilasi program adalah menjalankan ld.
ld menerima file Bahasa Perintah Linker yang ditulis dalam superset Editor Tautan AT&T
Sintaks Bahasa Perintah, untuk memberikan kontrol eksplisit dan total atas proses penautan.
Halaman manual ini tidak menjelaskan bahasa perintah; lihat ld masuk di "info" untuk lengkapnya
detail tentang bahasa perintah dan aspek lain dari penghubung GNU.
Versi ld menggunakan perpustakaan BFD tujuan umum untuk beroperasi pada file objek. Ini
memungkinkan ld untuk membaca, menggabungkan, dan menulis file objek dalam berbagai format---untuk
contoh, COFF atau "a.out". Format yang berbeda dapat dihubungkan bersama untuk menghasilkan apapun
jenis file objek yang tersedia.
Selain fleksibilitasnya, tautan GNU lebih membantu daripada tautan lain dalam menyediakan
informasi diagnostik. Banyak linker yang langsung mengabaikan eksekusi setelah menemukan
kesalahan; bila memungkinkan, ld terus mengeksekusi, memungkinkan Anda untuk mengidentifikasi kesalahan lainnya
(atau, dalam beberapa kasus, untuk mendapatkan file keluaran meskipun ada kesalahan).
Penghubung GNU ld dimaksudkan untuk mencakup berbagai situasi, dan agar kompatibel
mungkin dengan linker lainnya. Akibatnya, Anda memiliki banyak pilihan untuk mengendalikannya
tingkah laku.
PILIHAN
Linker mendukung sejumlah besar opsi baris perintah, tetapi dalam praktik sebenarnya hanya sedikit dari mereka
digunakan dalam konteks tertentu. Misalnya, sering menggunakan ld adalah untuk menghubungkan
file objek Unix standar pada sistem Unix standar yang didukung. Pada sistem seperti itu, untuk
tautkan file "hello.o":
saya bersedia /lib/crt0.o halo.o -lc
Ini menceritakan ld untuk menghasilkan file bernama keluaran sebagai hasil dari menautkan file
"/lib/crt0.o" dengan "hello.o" dan perpustakaan "libc.a", yang akan datang dari standar
direktori pencarian. (Lihat pembahasan -l pilihan di bawah.)
Beberapa opsi baris perintah untuk ld dapat ditentukan pada setiap titik di baris perintah.
Namun, opsi yang merujuk ke file, seperti -l or -T, menyebabkan file dibaca di
titik di mana opsi muncul di baris perintah, relatif terhadap file objek dan
opsi berkas lainnya. Mengulangi opsi non-file dengan argumen yang berbeda akan memiliki
tidak ada efek lebih lanjut, atau mengesampingkan kejadian sebelumnya (yang lebih jauh ke kiri pada perintah
baris) dari opsi itu. Opsi yang dapat ditentukan secara bermakna lebih dari satu kali adalah
dicatat dalam uraian di bawah ini.
Argumen non-opsi adalah file objek atau arsip yang akan dihubungkan bersama. Mereka
dapat mengikuti, mendahului, atau dicampur dengan opsi baris perintah, kecuali bahwa file objek
argumen tidak boleh ditempatkan di antara opsi dan argumennya.
Biasanya linker dipanggil dengan setidaknya satu file objek, tetapi Anda dapat menentukan lainnya
bentuk file input biner menggunakan -l, -R, dan bahasa perintah skrip. Jika tidak biner
file input sama sekali ditentukan, linker tidak menghasilkan output apa pun, dan mengeluarkan
pesan Tidak memasukkan arsip.
Jika penaut tidak dapat mengenali format file objek, ia akan menganggap bahwa itu adalah
skrip penghubung. Skrip yang ditentukan dengan cara ini menambah skrip penghubung utama yang digunakan untuk
tautan (baik skrip tautan default atau yang ditentukan dengan menggunakan -T). Ini
fitur memungkinkan penaut untuk menautkan ke file yang tampak seperti objek atau
arsip, tetapi sebenarnya hanya mendefinisikan beberapa nilai simbol, atau menggunakan "INPUT" atau "GROUP" untuk
memuat objek lain. Menentukan skrip dengan cara ini hanya menambah tautan utama
skrip, dengan perintah tambahan ditempatkan setelah skrip utama; menggunakan -T pilihan untuk mengganti
skrip tautan default sepenuhnya, tetapi perhatikan efek dari perintah "INSERT".
Untuk opsi yang namanya satu huruf, argumen opsi harus mengikuti
surat opsi tanpa mengintervensi spasi, atau diberikan sebagai argumen terpisah
segera mengikuti opsi yang mengharuskannya.
Untuk opsi yang namanya terdiri dari beberapa huruf, satu atau dua tanda hubung dapat mendahului
nama opsi; Misalnya, -jejak-simbol dan --simbol-jejak setara. Catatan --- di sana
adalah satu pengecualian untuk aturan ini. Beberapa opsi huruf yang dimulai dengan huruf kecil 'o'
hanya dapat didahului oleh dua tanda hubung. Ini untuk mengurangi kebingungan dengan -o pilihan. Jadi
misalnya -ajaib atur nama file output menjadi sihir sedangkan --magic mengatur NMAGIC
bendera pada output.
Argumen untuk opsi multi-huruf harus dipisahkan dari nama opsi dengan tanda
tanda sama dengan, atau diberikan sebagai argumen terpisah segera setelah opsi itu
membutuhkan mereka. Sebagai contoh, --simbol-jejak foo dan --trace-simbol=foo adalah setara.
Singkatan unik dari nama opsi beberapa huruf diterima.
Catatan --- jika linker dipanggil secara tidak langsung, melalui driver compiler (mis gcc) kemudian
semua opsi baris perintah tautan harus diawali dengan -Wl, (atau apa pun yang sesuai
untuk driver compiler tertentu) seperti ini:
gcc -Wl,--start-group foo.o bar.o -Wl,--end-group
Ini penting, karena jika tidak, program driver kompiler dapat secara diam-diam menjatuhkan
opsi tautan, menghasilkan tautan yang buruk. Kebingungan juga mungkin muncul saat melewati opsi
yang membutuhkan nilai melalui driver, seperti penggunaan spasi antara opsi dan argumen
bertindak sebagai pemisah, dan menyebabkan pengemudi hanya meneruskan opsi ke penghubung dan
argumen ke kompiler. Dalam hal ini, yang paling sederhana adalah menggunakan bentuk gabungan dari keduanya
opsi satu dan beberapa huruf, seperti:
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
Berikut adalah tabel switch baris perintah umum yang diterima oleh linker GNU:
@fillet
Baca opsi baris perintah dari fillet. Opsi yang dibaca disisipkan sebagai pengganti
asli @fillet pilihan. Jika fillet tidak ada, atau tidak dapat dibaca, maka opsi
akan diperlakukan secara harfiah, dan tidak dihapus.
Opsi dalam fillet dipisahkan oleh spasi. Karakter spasi putih dapat disertakan
dalam sebuah opsi dengan mengelilingi seluruh opsi dalam tanda kutip tunggal atau ganda. Setiap
karakter (termasuk garis miring terbalik) dapat dimasukkan dengan mengawali karakter menjadi
disertakan dengan garis miring terbalik. NS fillet mungkin sendiri mengandung tambahan @fillet pilihan; setiap
opsi tersebut akan diproses secara rekursif.
-a kata kunci
Opsi ini didukung untuk kompatibilitas HP/UX. NS kata kunci argumen harus salah satu dari
senar arsip, berbagi, atau kegagalan. -arsip secara fungsional setara dengan
-Bstatis, dan dua kata kunci lainnya secara fungsional setara dengan -Bdinamis. Ini
opsi dapat digunakan beberapa kali.
--audit AUDITLIB
Menambahkan AUDITLIB ke entri "DT_AUDIT" dari bagian dinamis. AUDITLIB tidak diperiksa
untuk keberadaan, juga tidak akan menggunakan DT_SONAME yang ditentukan di perpustakaan. Jika ditentukan
beberapa kali "DT_AUDIT" akan berisi daftar antarmuka audit yang dipisahkan titik dua untuk
menggunakan. Jika penaut menemukan objek dengan entri audit saat mencari yang dibagikan
perpustakaan, itu akan menambahkan entri "DT_DEPAUDIT" yang sesuai di file output. Ini
opsi ini hanya bermakna pada platform ELF yang mendukung antarmuka rtld-audit.
-A arsitektur
--arsitektur=arsitektur
Dalam rilis saat ini dari ld, opsi ini hanya berguna untuk keluarga Intel 960
ilmu bangunan. Karena ld konfigurasi, arsitektur argumen mengidentifikasi
arsitektur tertentu dalam keluarga 960, memungkinkan beberapa perlindungan dan memodifikasi
jalur pencarian arsip-pustaka.
Rilis mendatang dari ld dapat mendukung fungsionalitas serupa untuk arsitektur lain
keluarga.
-b Masukkan format
--format=Masukkan format
ld dapat dikonfigurasi untuk mendukung lebih dari satu jenis file objek. Jika Anda ld is
dikonfigurasi dengan cara ini, Anda dapat menggunakan -b opsi untuk menentukan format biner untuk input
file objek yang mengikuti opsi ini pada baris perintah. Bahkan ketika ld dikonfigurasi
untuk mendukung format objek alternatif, Anda biasanya tidak perlu menentukan ini, karena ld
harus dikonfigurasi untuk mengharapkan sebagai format input default format yang paling biasa pada masing-masing
mesin. Masukkan format adalah string teks, nama format tertentu yang didukung oleh
perpustakaan BFD. (Anda dapat membuat daftar format biner yang tersedia dengan keberatan -i.)
Anda mungkin ingin menggunakan opsi ini jika Anda menautkan file dengan biner yang tidak biasa
format. Anda juga bisa menggunakan -b untuk beralih format secara eksplisit (saat menautkan file objek
format yang berbeda), dengan memasukkan -b Masukkan format sebelum setiap grup file objek
dalam format tertentu.
Format default diambil dari variabel lingkungan "GNUTARGET".
Anda juga dapat menentukan format input dari skrip, menggunakan perintah "TARGET";
-c File perintah MRI
--mri-skrip=File perintah MRI
Untuk kompatibilitas dengan linker yang diproduksi oleh MRI, ld menerima file skrip yang ditulis dalam
alternatif, bahasa perintah terbatas, dijelaskan dalam File Skrip Kompatibel MRI
bagian dari dokumentasi GNU ld. Perkenalkan file skrip MRI dengan opsi -c; menggunakan
itu -T opsi untuk menjalankan skrip tautan yang ditulis untuk tujuan umum ld scripting
bahasa. Jika File MRI-cmd tidak ada, ld mencarinya di direktori yang ditentukan
oleh siapa saja -L Pilihan.
-d
-dc
-dp Ketiga opsi ini setara; beberapa bentuk didukung untuk kompatibilitas
dengan linker lainnya. Mereka menetapkan ruang untuk simbol umum bahkan jika output yang dapat dipindahkan
file ditentukan (dengan -r). Perintah skrip "FORCE_COMMON_ALLOCATION" memiliki
efek yang sama.
--deaudit AUDITLIB
-P AUDITLIB
Menambahkan AUDITLIB ke entri "DT_DEPAUDIT" dari bagian dinamis. AUDITLIB tidak
diperiksa keberadaannya, juga tidak akan menggunakan DT_SONAME yang ditentukan di perpustakaan. Jika
ditentukan beberapa kali "DT_DEPAUDIT" akan berisi daftar audit yang dipisahkan titik dua
antarmuka untuk digunakan. Opsi ini hanya bermakna pada platform ELF yang mendukung
antarmuka rtld-audit. Opsi -P disediakan untuk kompatibilitas Solaris.
-e masuk
--masuk=masuk
penggunaan masuk sebagai simbol eksplisit untuk memulai eksekusi program Anda, daripada
titik masuk default. Jika tidak ada simbol bernama masuk, penaut akan mencoba
parse masuk sebagai nomor, dan gunakan itu sebagai alamat masuk (nomornya adalah
ditafsirkan dalam basis 10; Anda dapat menggunakan terkemuka 0x untuk basis 16, atau leading 0 untuk dasar
8).
--kecualikan-libs lib,lib...
Menentukan daftar perpustakaan arsip dari mana simbol tidak boleh secara otomatis
diekspor. Nama perpustakaan dapat dibatasi dengan koma atau titik dua. Menentukan
"--exclude-libs ALL" mengecualikan simbol di semua perpustakaan arsip dari ekspor otomatis.
Opsi ini hanya tersedia untuk port penaut yang ditargetkan i386 PE dan untuk ELF
pelabuhan yang ditargetkan. Untuk i386 PE, simbol yang secara eksplisit tercantum dalam file .def masih
diekspor, terlepas dari opsi ini. Untuk port yang ditargetkan ELF, simbol yang terpengaruh oleh ini
opsi akan diperlakukan sebagai tersembunyi.
--exclude-modul-untuk-implib modul,modul...
Menentukan daftar file objek atau anggota arsip, dari mana simbol tidak boleh
diekspor secara otomatis, tetapi yang harus disalin secara grosir ke perpustakaan impor
dihasilkan selama tautan. Nama modul dapat dipisahkan dengan koma atau
titik dua, dan harus sama persis dengan nama file yang digunakan oleh ld untuk membuka file; untuk arsip
anggota, ini hanyalah nama anggota, tetapi untuk file objek nama yang tercantum harus
sertakan dan cocokkan dengan tepat semua jalur yang digunakan untuk menentukan file input pada linker
garis komando. Opsi ini hanya tersedia untuk port target i386 PE dari
penghubung. Simbol yang secara eksplisit tercantum dalam file .def masih diekspor, terlepas dari
pilihan ini.
-E
--ekspor-dinamis
--tidak-ekspor-dinamis
Saat membuat executable yang terhubung secara dinamis, menggunakan -E pilihan atau
--ekspor-dinamis opsi menyebabkan tautan menambahkan semua simbol ke simbol dinamis
meja. Tabel simbol dinamis adalah kumpulan simbol yang terlihat dari dinamis
objek pada saat dijalankan.
Jika Anda tidak menggunakan salah satu dari opsi ini (atau menggunakan --tidak-ekspor-dinamis pilihan untuk
mengembalikan perilaku default), tabel simbol dinamis biasanya hanya berisi
simbol-simbol yang dirujuk oleh beberapa objek dinamis yang disebutkan dalam tautan.
Jika Anda menggunakan "dlopen" untuk memuat objek dinamis yang perlu merujuk kembali ke simbol
ditentukan oleh program, daripada beberapa objek dinamis lainnya, maka Anda mungkin akan
perlu menggunakan opsi ini saat menautkan program itu sendiri.
Anda juga dapat menggunakan daftar dinamis untuk mengontrol simbol apa yang harus ditambahkan ke
tabel simbol dinamis jika format output mendukungnya. Lihat deskripsi dari
--dinamis-daftar.
Perhatikan bahwa opsi ini khusus untuk port yang ditargetkan ELF. Target PE mendukung hal serupa
berfungsi untuk mengekspor semua simbol dari DLL atau EXE; lihat deskripsi
--ekspor-semua-simbol di bawah.
-EB Tautkan objek big-endian. Ini mempengaruhi format output default.
-ITU Tautkan objek little-endian. Ini mempengaruhi format output default.
-f nama
--bantuan=nama
Saat membuat objek bersama ELF, setel bidang DT_AUXILIARY internal ke
nama yang ditentukan. Ini memberitahu linker dinamis bahwa tabel simbol yang dibagikan
objek harus digunakan sebagai filter tambahan pada tabel simbol objek yang dibagikan
nama.
Jika nanti Anda menautkan program ke objek filter ini, maka, saat Anda menjalankan
program, linker dinamis akan melihat bidang DT_AUXILIARY. Jika penaut dinamis
menyelesaikan simbol apa pun dari objek filter, pertama-tama akan memeriksa apakah ada
definisi dalam objek bersama nama. Jika ada, itu akan digunakan sebagai pengganti
definisi dalam objek filter. Objek yang dibagikan nama tidak perlu ada. Jadi
objek bersama nama dapat digunakan untuk memberikan alternatif implementasi dari
fungsi, mungkin untuk debugging atau untuk kinerja khusus mesin.
Opsi ini dapat ditentukan lebih dari sekali. Entri DT_AUXILIARY akan dibuat
dalam urutan di mana mereka muncul di baris perintah.
-F nama
--filter=nama
Saat membuat objek bersama ELF, setel bidang DT_FILTER internal ke yang ditentukan
nama. 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 nanti Anda menautkan program ke objek filter ini, maka, saat Anda menjalankan
program, linker dinamis akan melihat bidang DT_FILTER. Penaut dinamis akan
menyelesaikan simbol sesuai dengan tabel simbol objek filter seperti biasa, tetapi itu
akan benar-benar menautkan ke definisi yang ditemukan di objek bersama nama. Demikianlah
objek filter dapat digunakan untuk memilih subset dari simbol yang disediakan oleh objek
nama.
Beberapa tautan lama menggunakan -F opsi di seluruh rangkaian alat kompilasi untuk
menentukan format file objek untuk file objek input dan output. Penghubung GNU
menggunakan mekanisme lain untuk tujuan ini: the -b, --format, --oformat pilihan,
Perintah "TARGET" dalam skrip tautan, dan variabel lingkungan "GNUTARGET". GNU
linker akan mengabaikan -F opsi saat tidak membuat objek bersama ELF.
-fini=nama
Saat membuat objek yang dapat dieksekusi atau dibagikan ELF, panggil NAME saat objek yang dapat dieksekusi atau
objek bersama diturunkan, dengan mengatur DT_FINI ke alamat fungsi. Oleh
default, linker menggunakan "_fini" sebagai fungsi untuk memanggil.
-g Diabaikan. Disediakan untuk kompatibilitas dengan alat lain.
-G nilai
--ukuran gps=nilai
Atur ukuran maksimum objek yang akan dioptimalkan menggunakan register GP ke ukuran. Ini
hanya berarti untuk format file objek seperti MIPS ELF yang mendukung penempatan besar
dan benda-benda kecil menjadi bagian yang berbeda. Ini diabaikan untuk file objek lain
format.
-h nama
-namakamu=nama
Saat membuat objek bersama ELF, setel bidang DT_SONAME internal ke yang ditentukan
nama. Ketika executable ditautkan dengan objek bersama yang memiliki bidang DT_SONAME,
kemudian ketika executable dijalankan, tautan dinamis akan mencoba memuat yang dibagikan
objek yang ditentukan oleh bidang DT_SONAME daripada menggunakan nama file yang diberikan kepada
penghubung.
-i Lakukan tautan tambahan (sama seperti opsi -r).
-init=nama
Saat membuat objek yang dapat dieksekusi atau dibagikan ELF, panggil NAME saat objek yang dapat dieksekusi atau
objek bersama dimuat, dengan mengatur DT_INIT ke alamat fungsi. Oleh
default, linker menggunakan "_init" sebagai fungsi untuk memanggil.
-l spesifikasi nama
--perpustakaan=spesifikasi nama
Tambahkan arsip atau file objek yang ditentukan oleh spesifikasi nama ke daftar file yang akan ditautkan.
Opsi ini dapat digunakan beberapa kali. Jika spesifikasi nama berbentuk :nama file, ld
akan mencari jalur perpustakaan untuk file bernama nama file, jika tidak maka akan mencari
jalur perpustakaan untuk file bernama libnamespec.a.
Pada sistem yang mendukung perpustakaan bersama, ld juga dapat mencari file selain
libnamespec.a. Khususnya, pada sistem ELF dan SunOS, ld akan mencari direktori untuk
perpustakaan yang disebut libnamespec.so sebelum mencari yang disebut libnamespec.a. (Oleh
konvensi, ekstensi ".so" menunjukkan perpustakaan bersama.) Perhatikan bahwa perilaku ini
tidak berlaku untuk :nama file, yang selalu menentukan file bernama nama file.
Penaut akan mencari arsip hanya sekali, di lokasi yang ditentukan
baris perintah. Jika arsip mendefinisikan simbol yang tidak terdefinisi di beberapa objek
yang muncul sebelum arsip di baris perintah, tautan akan menyertakan
file yang sesuai dari arsip. Namun, simbol yang tidak ditentukan dalam suatu objek
muncul nanti di baris perintah tidak akan menyebabkan tautan mencari arsip
lagi.
Lihat -( opsi cara memaksa tautan untuk mencari arsip beberapa kali.
Anda dapat membuat daftar arsip yang sama beberapa kali di baris perintah.
Jenis pencarian arsip ini adalah standar untuk tautan Unix. Namun, jika Anda
menggunakan ld pada AIX, perhatikan bahwa ini berbeda dari perilaku penaut AIX.
-L caridir
--jalur-perpustakaan=caridir
Tambahkan jalur caridir ke daftar jalur yang ld akan mencari perpustakaan arsip dan
ld skrip kontrol. Anda dapat menggunakan opsi ini beberapa kali. Direktori adalah
dicari dalam urutan yang ditentukan pada baris perintah. Direktori
ditentukan pada baris perintah dicari sebelum direktori default. Semua -L
opsi berlaku untuk semua -l opsi, terlepas dari urutan kemunculan opsi.
-L pilihan tidak mempengaruhi bagaimana ld mencari skrip tautan kecuali -T pilihannya adalah
ditentukan.
If caridir dimulai dengan "=", maka "=" akan diganti dengan akar sys awalan,
dikendalikan oleh --sysroot opsi, atau ditentukan saat penaut dikonfigurasi.
Kumpulan jalur default yang dicari (tanpa ditentukan dengan -L) tergantung pada
mode emulasi ld digunakan, dan dalam beberapa kasus juga tentang cara konfigurasinya.
Jalur juga dapat ditentukan dalam skrip tautan dengan perintah "SEARCH_DIR".
Direktori yang ditentukan dengan cara ini dicari pada titik di mana skrip tautan
muncul di baris perintah.
-m persaingan
Meniru persaingan penghubung. Anda dapat membuat daftar emulasi yang tersedia dengan
--bertele-tele or -V Pilihan.
Jika -m opsi tidak digunakan, emulasi diambil dari "LDEMULASI"
variabel lingkungan, jika itu didefinisikan.
Jika tidak, emulasi default tergantung pada bagaimana linker dikonfigurasi.
-M
--cetak-peta
Cetak peta tautan ke output standar. Peta tautan memberikan informasi tentang
tautan, antara lain sebagai berikut:
· Dimana file objek dipetakan ke dalam memori.
· Bagaimana simbol umum dialokasikan.
· Semua anggota arsip disertakan dalam tautan, dengan menyebutkan simbol yang
menyebabkan anggota arsip dibawa masuk.
· Nilai yang ditetapkan untuk simbol.
Catatan - simbol yang nilainya dihitung dengan ekspresi yang melibatkan a
referensi ke nilai sebelumnya dari simbol yang sama mungkin tidak memiliki hasil yang benar
ditampilkan di peta tautan. Ini karena tautan membuang perantara
hasil dan hanya mempertahankan nilai akhir dari sebuah ekspresi. Di bawah seperti itu
keadaan linker akan menampilkan nilai akhir yang diapit oleh tanda kurung siku.
Jadi misalnya skrip tautan yang berisi:
fo = 1
foo = foo * 4
foo = foo + 8
akan menghasilkan output berikut di peta tautan jika -M opsi yang digunakan:
0x00000001 foo = 0x1
[0x0000000c] foo = (foo * 0x4)
[0x0000000c] foo = (foo + 0x8)
Lihat Ekspresi untuk informasi lebih lanjut tentang ekspresi dalam skrip tautan.
-n
--najaib
Matikan perataan halaman bagian, dan nonaktifkan penautan ke pustaka bersama. Jika
format output mendukung angka ajaib gaya Unix, tandai output sebagai "NMAGIC".
-N
--magic
Atur bagian teks dan data agar dapat dibaca dan ditulis. Juga, jangan meratakan halaman
segmen data, dan nonaktifkan penautan terhadap pustaka bersama. Jika format keluaran
mendukung angka ajaib gaya Unix, tandai output sebagai "OMAGIC". Catatan: Meskipun a
bagian teks yang dapat ditulis diperbolehkan untuk target PE-COFF, itu tidak sesuai dengan
spesifikasi format yang diterbitkan oleh Microsoft.
--tidak-ajaib
Opsi ini meniadakan sebagian besar efek dari -N pilihan. Ini mengatur bagian teks menjadi
menjadi hanya-baca, dan memaksa segmen data untuk disejajarkan dengan halaman. Catatan - opsi ini tidak
tidak mengaktifkan penautan ke perpustakaan bersama. Menggunakan -Bdinamis untuk ini.
-o keluaran
--keluaran=keluaran
penggunaan keluaran sebagai nama untuk program yang diproduksi oleh ld; jika opsi ini tidak
ditentukan, nama keluar digunakan secara default. Perintah skrip "OUTPUT" juga dapat
tentukan nama file keluaran.
-O tingkat
If tingkat adalah nilai numerik yang lebih besar dari nol ld mengoptimalkan keluaran. Ini mungkin
memakan waktu lebih lama secara signifikan dan oleh karena itu mungkin hanya boleh diaktifkan untuk final
biner. Saat ini opsi ini hanya memengaruhi pembuatan perpustakaan bersama ELF. Masa depan
rilis tautan dapat lebih menggunakan opsi ini. Juga saat ini tidak ada
perbedaan dalam perilaku penaut untuk nilai bukan nol yang berbeda dari opsi ini.
Sekali lagi ini dapat berubah dengan rilis mendatang.
--push-status
--push-status memungkinkan untuk mempertahankan keadaan bendera saat ini yang mengatur
penanganan file input sehingga semuanya dapat dipulihkan dengan satu yang sesuai
--pop-negara .
Opsi yang dicakup adalah: -Bdinamis, -Bstatis, -dn, -dy, -panggilan_berbagi,
-tidak_dibagikan, -statis, -N, -n, --seluruh-arsip, --tidak-seluruh-arsip, -r, -Ur,
--salin-dt-entri yang diperlukan, --tidak ada-salinan-dt-entri yang diperlukan, --sesuai kebutuhan, --tidak sesuai kebutuhan,
dan -a.
Salah satu target untuk opsi ini adalah spesifikasi untuk pkg-config. Saat digunakan dengan
--lib opsi semua perpustakaan yang mungkin diperlukan terdaftar dan kemudian mungkin ditautkan dengan
sepanjang waktu. Lebih baik mengembalikan sesuatu sebagai berikut:
-Wl,--push-state,--sesuai kebutuhan -libone -libtwo -Wl,--pop-state
Membatalkan efek --push-state, mengembalikan nilai sebelumnya dari flag yang mengatur
penanganan file masukan.
-q
--memancarkan-relokasi
Biarkan bagian dan konten relokasi dalam executable yang sepenuhnya terhubung. Tautan pos
alat analisis dan pengoptimalan mungkin memerlukan informasi ini agar dapat bekerja dengan benar
modifikasi dari executable. Ini menghasilkan executable yang lebih besar.
Opsi ini saat ini hanya didukung pada platform ELF.
--gaya-dinamis
Paksa file output untuk memiliki bagian dinamis. Opsi ini khusus untuk VxWorks
target.
-r
--dapat dipindahkan
Hasilkan keluaran yang dapat dipindahkan --- yaitu, hasilkan file keluaran yang pada gilirannya dapat berfungsi sebagai
masukan ke ld. Ini sering disebut sebagian menghubungkan. Sebagai efek samping, di lingkungan
yang mendukung angka ajaib Unix standar, opsi ini juga mengatur file output
angka ajaib menjadi "OMAGIC". Jika opsi ini tidak ditentukan, file absolut adalah
diproduksi. Saat menautkan program C++, opsi ini akan tidak menyelesaikan 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 itu tidak berisi relokasi apa pun. Berbeda
format output dapat memiliki batasan lebih lanjut; misalnya beberapa format berbasis "a.out"
tidak mendukung penautan sebagian dengan file input dalam format lain sama sekali.
Opsi ini melakukan hal yang sama seperti -i.
-R nama file
--hanya-simbol=nama file
Baca nama simbol dan alamatnya dari nama file, tetapi jangan memindahkannya atau menyertakan
itu di keluaran. Ini memungkinkan file keluaran Anda untuk merujuk secara simbolis ke absolut
lokasi memori yang ditentukan dalam program lain. Anda dapat menggunakan opsi ini lebih dari
sekali.
Untuk kompatibilitas dengan linker ELF lainnya, jika -R opsi diikuti oleh direktori
nama, bukan nama file, itu diperlakukan sebagai -rjalan .
-s
--strip-semua
Hilangkan semua informasi simbol dari file output.
-S
--strip-debug
Abaikan informasi simbol debugger (tetapi tidak semua simbol) dari file output.
-t
--jejak
Cetak nama file input sebagai ld memproses mereka.
-T file skrip
--skrip=file skrip
penggunaan file skrip sebagai skrip tautan. Skrip ini menggantikan ldskrip tautan default
(daripada menambahkannya), jadi file perintah harus menentukan semua yang diperlukan untuk
menggambarkan file keluaran. Jika file skrip tidak ada di direktori saat ini,
"ld" mencarinya di direktori yang ditentukan oleh sebelumnya -L pilihan. Beberapa
-T pilihan menumpuk.
-dT file skrip
--skrip-default=file skrip
penggunaan file skrip sebagai skrip tautan default.
Opsi ini mirip dengan --naskah opsi kecuali pemrosesan skrip adalah
ditunda sampai setelah baris perintah lainnya diproses. Ini memungkinkan
opsi ditempatkan setelah --skrip-default opsi pada baris perintah untuk memengaruhi
perilaku skrip tautan, yang bisa menjadi penting ketika baris perintah tautan
tidak dapat dikontrol langsung oleh pengguna. (misalnya karena baris perintah sedang
dibangun oleh alat lain, seperti gcc).
-u simbol
--tidak terdefinisi=simbol
kekuatan simbol untuk dimasukkan dalam file output sebagai simbol yang tidak ditentukan. Melakukan ini mungkin,
misalnya, memicu penautan modul tambahan dari pustaka standar. -u mungkin
diulang dengan argumen opsi yang berbeda untuk memasukkan simbol tambahan yang tidak ditentukan. Ini
opsi ini setara dengan perintah skrip tautan "EXTERN".
Jika opsi ini digunakan untuk memaksa modul tambahan ditarik ke tautan,
dan jika itu adalah kesalahan untuk simbol tetap tidak terdefinisi, maka opsinya
--require-didefinisikan harus digunakan sebagai gantinya.
--memerlukan-ditentukan=simbol
Mengharuskan itu simbol didefinisikan dalam file keluaran. Opsi ini sama dengan opsi
--tidak terdefinisi kecuali jika simbol tidak didefinisikan dalam file output maka linker
akan mengeluarkan kesalahan dan keluar. Efek yang sama dapat dicapai dalam skrip tautan dengan
menggunakan "EXTERN", "ASSERT" dan "DEFINED" secara bersamaan. Opsi ini dapat digunakan beberapa
kali untuk membutuhkan simbol tambahan.
-Ur Untuk apa pun selain program C++, opsi ini setara dengan -r: menghasilkan
keluaran yang dapat dipindahkan --- yaitu, file keluaran yang pada gilirannya dapat berfungsi sebagai masukan untuk ld. Ketika
menghubungkan program C++, -Ur tidak menyelesaikan referensi ke konstruktor, tidak seperti -r. memang
tidak berfungsi untuk digunakan -Ur pada file yang terhubung sendiri dengan -Ur; sekali
tabel konstruktor telah dibuat, tidak dapat ditambahkan. Menggunakan -Ur hanya untuk yang terakhir
tautan parsial, dan -r untuk yang lain.
--penanganan anak yatim=MODE
Kontrol bagaimana bagian anak yatim ditangani. Bagian yatim piatu adalah bagian yang tidak secara khusus
disebutkan dalam skrip tautan.
MODE dapat memiliki salah satu dari nilai berikut:
"tempat"
Bagian anak yatim ditempatkan ke bagian keluaran yang sesuai mengikuti strategi
dijelaskan dalam Anak yatim bagian. Pilihan --unik juga mempengaruhi bagaimana bagian itu
ditempatkan.
"membuang"
Semua bagian anak yatim dibuang, dengan menempatkannya di /MEMBUANG/ bagian.
"memperingatkan"
Linker akan menempatkan bagian anak yatim sebagai "tempat" dan juga mengeluarkan peringatan.
"kesalahan"
Linker akan keluar dengan kesalahan jika ada bagian yatim piatu yang ditemukan.
default jika --penanganan yatim piatu tidak diberikan adalah "tempat".
--unik[=BAGIAN]
Membuat bagian output terpisah untuk setiap pencocokan bagian input BAGIAN, atau jika
wildcard opsional BAGIAN argumen tidak ada, untuk setiap bagian input yatim piatu. NS
bagian yatim adalah salah satu yang tidak disebutkan secara khusus dalam skrip tautan. Anda dapat menggunakan ini
opsi beberapa kali pada baris perintah; Ini mencegah penggabungan input yang normal
bagian dengan nama yang sama, mengesampingkan penetapan bagian keluaran dalam skrip tautan.
-v
--Versi: kapan
-V Tampilkan nomor versi untuk ld. itu -V opsi juga mencantumkan emulasi yang didukung.
-x
--buang-semua
Hapus semua simbol lokal.
-X
--buang-lokal
Hapus semua simbol lokal sementara. (Simbol ini dimulai dengan lokal khusus sistem
awalan label, biasanya .L untuk sistem ELF atau L untuk sistem a.out tradisional.)
-y simbol
--simbol-jejak=simbol
Cetak nama setiap file tertaut di mana simbol muncul. Opsi ini dapat diberikan
berapa kali. Pada banyak sistem, perlu untuk menambahkan garis bawah.
Opsi ini berguna ketika Anda memiliki simbol yang tidak ditentukan di tautan Anda tetapi tidak tahu
dari mana referensi itu berasal.
-Y path
Add path ke jalur pencarian pustaka default. Opsi ini ada untuk Solaris
kompatibilitas.
-z kata kunci
Kata kunci yang dikenali adalah:
combreloc
Menggabungkan beberapa bagian relokasi dan mengurutkannya untuk membuat pencarian simbol dinamis
caching mungkin.
def
Melarang simbol yang tidak ditentukan dalam file objek. Simbol tidak terdefinisi dalam dibagikan
perpustakaan masih diperbolehkan.
tumpukan eksek
Menandai objek sebagai membutuhkan tumpukan yang dapat dieksekusi.
global
Opsi ini hanya bermakna saat membangun objek bersama. Itu membuat
simbol yang ditentukan oleh objek bersama ini tersedia untuk resolusi simbol
perpustakaan yang kemudian dimuat.
initpertama
Opsi ini hanya bermakna saat membangun objek bersama. Ini menandai objek
sehingga inisialisasi runtime akan terjadi sebelum inisialisasi runtime dari
objek lain yang dibawa ke dalam proses pada saat yang sama. Demikian pula
finalisasi runtime objek akan terjadi setelah finalisasi runtime
objek lainnya.
menempatkan
Menandai objek yang diletakkan oleh tabel simbolnya sebelum semua simbol kecuali
utama yang dapat dieksekusi.
malas
Saat membuat perpustakaan yang dapat dieksekusi atau dibagikan, tandai untuk memberi tahu dinamika
tautan untuk menunda resolusi panggilan fungsi ke titik ketika fungsi dipanggil
(pengikatan malas), bukan pada waktu buka. Pengikatan malas adalah default.
memuatfltr
Menandai objek yang filternya segera diproses saat runtime.
muldef
Memungkinkan beberapa definisi.
nocombreloc.dll
Menonaktifkan penggabungan beberapa bagian relokasi.
nocopyreloc.dll
Nonaktifkan variabel .dynbss yang dihasilkan penaut yang digunakan sebagai pengganti variabel yang didefinisikan di
perpustakaan bersama. Dapat mengakibatkan relokasi teks dinamis.
tidak default
Menandai objek yang akan diabaikan oleh pencarian dependensi objek ini
jalur pencarian perpustakaan default.
simpul
Menandai objek tidak boleh dibongkar saat runtime.
simpul
Menandai objek tidak tersedia untuk "dlopen".
nodump
Menandai objek tidak dapat dibuang oleh "dldump".
noexecstack
Menandai objek sebagai tidak memerlukan tumpukan yang dapat dieksekusi.
teks
Perlakukan DT_TEXTREL di objek bersama sebagai kesalahan.
catatan
Jangan perlakukan DT_TEXTREL di objek bersama sebagai kesalahan.
teks off
Jangan perlakukan DT_TEXTREL di objek bersama sebagai kesalahan.
norelro
Jangan membuat header segmen "PT_GNU_RELRO" ELF di objek.
sekarang Saat membuat perpustakaan yang dapat dieksekusi atau dibagikan, tandai untuk memberi tahu dinamika
linker untuk menyelesaikan semua simbol saat program dimulai, atau saat dibagikan
perpustakaan ditautkan untuk menggunakan dlopen, alih-alih menunda resolusi panggilan fungsi
ke titik ketika fungsi pertama kali dipanggil.
asal
Menandai objek mungkin berisi $ORIGIN.
relro
Buat header segmen "PT_GNU_RELRO" ELF di objek.
ukuran halaman maks=nilai
Atur ukuran halaman maksimum emulasi ke nilai.
ukuran halaman umum=nilai
Atur ukuran halaman umum emulasi ke nilai.
ukuran tumpukan =nilai
Tentukan ukuran tumpukan untuk dalam segmen "PT_GNU_STACK" ELF. Menentukan nol akan
menimpa semua pembuatan segmen "PT_GNU_STACK" default berukuran bukan nol.
bndplt
Selalu buat awalan BND di entri PLT. Didukung untuk Linux/x86_64.
data yang dilindungi-noextern
Jangan perlakukan simbol data yang dilindungi sebagai eksternal saat membangun perpustakaan bersama. Ini
opsi menimpa default backend tautan. Ini dapat digunakan untuk solusi yang salah
relokasi terhadap simbol data yang dilindungi yang dihasilkan oleh kompiler. Pembaruan aktif
simbol data yang dilindungi oleh modul lain tidak terlihat oleh hasil yang dibagikan
Perpustakaan. Didukung untuk i386 dan x86-64.
panggilan-nop=awalan-addr
call-nop=awalan-nop
call-nop=akhiran-nop
panggilan-nop=awalan-byte
panggilan-nop=akhiran-byte
Tentukan padding "NOP" 1-byte saat mengubah panggilan tidak langsung ke lokal
fungsi yang ditentukan, foo, melalui slot GOT-nya. panggilan-nop=awalan-addr menghasilkan "0x67
panggil fo". call-nop=awalan-nop menghasilkan "0x90 panggilan foo". call-nop=akhiran-nop
menghasilkan "panggilan foo 0x90". panggilan-nop=awalan-byte menghasilkan "byte panggilan foo".
panggilan-nop=akhiran-byte menghasilkan "panggilan foo byte". Didukung untuk i386 dan x86_64.
Kata kunci lain diabaikan untuk kompatibilitas Solaris.
-( arsip -)
--start-grup arsip --end-grup
arsip harus berupa daftar file arsip. Mereka mungkin berupa file eksplisit
nama, atau -l Pilihan.
Arsip yang ditentukan dicari berulang kali sampai tidak ada referensi baru yang belum ditentukan
dibuat. Biasanya, arsip hanya dicari sekali dalam urutan yang ditentukan
pada baris perintah. Jika simbol dalam arsip itu diperlukan untuk menyelesaikan masalah yang tidak ditentukan
simbol 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 sampai semua referensi yang mungkin 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 diketahui-input-arch
--tidak-menerima-tidak diketahui-input-arch
Memberitahu linker untuk menerima file input yang arsitekturnya tidak dapat dikenali. NS
asumsinya adalah bahwa pengguna tahu apa yang mereka lakukan dan dengan sengaja ingin menautkan
dalam file input yang tidak dikenal ini. Ini adalah perilaku default dari linker, sebelumnya
rilis 2.14. Perilaku default dari rilis 2.14 dan seterusnya adalah menolak input tersebut
file, dan sebagainya --menerima-tidak diketahui-input-arch opsi telah ditambahkan untuk mengembalikan yang lama
tingkah laku.
--sesuai kebutuhan
--tidak sesuai kebutuhan
Opsi ini memengaruhi tag ELF DT_NEEDED untuk pustaka dinamis yang disebutkan pada perintah
baris setelah --sesuai kebutuhan pilihan. Biasanya penaut akan menambahkan tag DT_NEEDED untuk
setiap perpustakaan dinamis yang disebutkan pada baris perintah, terlepas dari apakah perpustakaan
benar-benar dibutuhkan atau tidak. --sesuai kebutuhan menyebabkan tag DT_NEEDED hanya dipancarkan untuk
perpustakaan yang at bahwa titik in itu link memenuhi simbol tidak terdefinisi yang tidak lemah
referensi dari file objek biasa atau, jika perpustakaan tidak ditemukan di DT_NEEDED
daftar perpustakaan lain yang dibutuhkan, referensi simbol tidak terdefinisi yang tidak lemah dari yang lain
perpustakaan dinamis yang dibutuhkan. File objek atau pustaka muncul di baris perintah setelah
perpustakaan yang bersangkutan tidak mempengaruhi apakah perpustakaan dipandang sesuai kebutuhan. Ini adalah
mirip dengan aturan untuk ekstraksi file objek dari arsip. --tidak sesuai kebutuhan
mengembalikan perilaku default.
--tambah-diperlukan
--tidak-tambah-perlu
Kedua opsi ini tidak digunakan lagi karena kesamaan nama mereka dengan
--sesuai kebutuhan dan --tidak sesuai kebutuhan pilihan. Mereka telah digantikan oleh
--salin-dt-entri yang diperlukan dan --tidak ada-salinan-dt-entri yang diperlukan.
-menegaskan kata kunci
Opsi ini diabaikan untuk kompatibilitas SunOS.
-Bdinamis
-dy
-panggilan_berbagi
Tautan terhadap perpustakaan dinamis. Ini hanya berarti pada platform yang dibagikan
perpustakaan didukung. Opsi ini biasanya default pada platform tersebut. NS
varian yang berbeda dari opsi ini adalah untuk kompatibilitas dengan berbagai sistem. Kamu boleh
gunakan opsi ini beberapa kali di baris perintah: ini memengaruhi pencarian perpustakaan
-l pilihan yang mengikutinya.
-Bgrup
Setel bendera "DF_1_GROUP" di entri "DT_FLAGS_1" di bagian dinamis. Ini
menyebabkan runtime linker menangani pencarian di objek ini dan dependensinya menjadi
dilakukan hanya di dalam kelompok. --unresolved-symbols=laporkan-semua tersirat. Ini
opsi ini hanya bermakna pada platform ELF yang mendukung perpustakaan bersama.
-Bstatis
-dn
-tidak_dibagikan
-statis
Jangan menautkan ke perpustakaan bersama. Ini hanya berarti pada platform yang
perpustakaan bersama didukung. Varian yang berbeda dari opsi ini adalah untuk
kompatibilitas dengan berbagai sistem. Anda dapat menggunakan opsi ini beberapa kali di
baris perintah: itu memengaruhi pencarian perpustakaan -l pilihan yang mengikutinya. Ini
pilihan juga menyiratkan --unresolved-symbols=laporkan-semua. Opsi ini dapat digunakan dengan
-bersama. Melakukannya berarti perpustakaan bersama sedang dibuat tetapi semua
referensi eksternal perpustakaan harus diselesaikan dengan menarik entri dari statis
perpustakaan.
-Bsimbolik
Saat membuat perpustakaan bersama, ikat referensi ke simbol global ke definisi
dalam perpustakaan bersama, jika ada. Biasanya, adalah mungkin untuk program yang ditautkan
terhadap perpustakaan bersama untuk mengganti definisi dalam perpustakaan bersama. Ini
opsi juga dapat digunakan dengan --ekspor-dinamis pilihan, saat membuat posisi
executable independen, untuk mengikat referensi ke simbol global dengan definisi di dalam
yang dapat dieksekusi. Opsi ini hanya bermakna pada platform ELF yang mendukung berbagi
perpustakaan dan posisi executable independen.
-Bsymbolic-fungsi
Saat membuat perpustakaan bersama, ikat referensi ke simbol fungsi global ke
definisi dalam perpustakaan bersama, jika ada. Opsi ini juga dapat digunakan dengan
--ekspor-dinamis opsi, saat membuat posisi yang dapat dieksekusi independen, untuk mengikat
referensi ke simbol fungsi global ke definisi dalam executable. Ini
opsi hanya bermakna pada platform ELF yang mendukung perpustakaan dan posisi bersama
executable independen.
--dinamis-daftar=file-daftar-dinamis
Tentukan nama file daftar dinamis ke linker. Ini biasanya digunakan ketika
membuat perpustakaan bersama untuk menentukan daftar simbol global yang referensinya
tidak boleh terikat dengan definisi dalam pustaka bersama, atau membuat
executable yang terhubung secara dinamis untuk menentukan daftar simbol yang harus ditambahkan ke
tabel simbol dalam executable. Opsi ini hanya bermakna pada platform ELF
yang mendukung perpustakaan bersama.
Format daftar dinamis sama dengan simpul versi tanpa ruang lingkup dan simpul
nama. Lihat VERSION for more information.
--dinamis-daftar-data
Sertakan semua simbol data global ke daftar dinamis.
--dinamis-daftar-cpp-baru
Berikan daftar dinamis bawaan untuk operator C++ baru dan hapus. Ini terutama berguna
untuk membangun libstdc++ bersama.
--dinamis-daftar-cpp-typeinfo
Berikan daftar dinamis bawaan untuk identifikasi jenis runtime C++.
--periksa-bagian
--no-check-bagian
Tanya linkernya tidak untuk memeriksa alamat bagian setelah mereka ditugaskan untuk melihat apakah
ada tumpang tindih. Biasanya linker akan melakukan pemeriksaan ini, dan jika ditemukan
setiap tumpang tindih itu akan menghasilkan pesan kesalahan yang sesuai. Penghubung memang tahu tentang, dan
tidak membuat kelonggaran untuk bagian dalam overlay. Perilaku default dapat dipulihkan
dengan menggunakan sakelar baris perintah --periksa-bagian. Bagian yang tumpang tindih biasanya tidak
memeriksa tautan yang dapat dipindahkan. Anda dapat memaksa memeriksa dalam kasus itu dengan menggunakan
--periksa-bagian .
--salin-dt-entri yang diperlukan
--tidak ada-salinan-dt-entri yang diperlukan
Opsi ini memengaruhi perlakuan pustaka dinamis yang dirujuk oleh tag DT_NEEDED
dalam Pustaka dinamis ELF disebutkan di baris perintah. Biasanya linker tidak akan
tambahkan tag DT_NEEDED ke biner keluaran untuk setiap perpustakaan yang disebutkan dalam tag DT_NEEDED
di perpustakaan dinamis masukan. Dengan --salin-dt-entri yang diperlukan ditentukan pada perintah
baris namun setiap perpustakaan dinamis yang mengikutinya akan memiliki entri DT_NEEDED mereka
ditambahkan. Perilaku default dapat dipulihkan dengan --tidak ada-salinan-dt-entri yang diperlukan.
Opsi ini juga memiliki efek pada resolusi simbol di perpustakaan dinamis.
Dengan --salin-dt-entri yang diperlukan perpustakaan dinamis yang disebutkan pada baris perintah adalah
mencari secara rekursif, mengikuti tag DT_NEEDED mereka ke perpustakaan lain, untuk
menyelesaikan simbol yang diperlukan oleh biner keluaran. Dengan pengaturan default namun
pencarian perpustakaan dinamis yang mengikutinya akan berhenti dengan perpustakaan dinamis
diri. Tidak ada tautan DT_NEEDED yang akan dilalui untuk menyelesaikan simbol.
--cref
Keluarkan tabel referensi silang. Jika file peta penghubung sedang dibuat, tanda silang
tabel referensi dicetak ke file peta. Jika tidak, itu dicetak pada standar
output.
Format tabel sengaja dibuat sederhana, agar mudah diolah oleh
naskah jika perlu. Simbol dicetak, diurutkan berdasarkan nama. Untuk setiap simbol,
daftar nama file diberikan. Jika simbol didefinisikan, file pertama yang terdaftar adalah
lokasi definisi. Jika simbol didefinisikan sebagai nilai umum maka file apa pun
di mana ini terjadi muncul berikutnya. Akhirnya semua file yang mereferensikan simbol tersebut adalah
terdaftar.
--no-define-umum
Opsi ini menghambat penetapan alamat ke simbol umum. Naskah
perintah "INHIBIT_COMMON_ALLOCATION" memiliki efek yang sama.
--no-define-umum opsi memungkinkan decoupling keputusan untuk menetapkan alamat ke
Simbol umum dari pilihan jenis file output; jika tidak, tidak dapat dipindahkan
jenis output memaksa menetapkan alamat ke simbol umum. Menggunakan --no-define-umum
memungkinkan simbol umum yang direferensikan dari perpustakaan bersama untuk ditugaskan
alamat hanya di program utama. Ini menghilangkan ruang duplikat yang tidak digunakan di
perpustakaan bersama, dan juga mencegah kemungkinan kebingungan atas penyelesaian yang salah
duplikat 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 kelipatan
simbol di baris perintah. Bentuk aritmatika terbatas didukung untuk
ekspresi dalam konteks ini: Anda dapat memberikan konstanta heksadesimal atau nama an
simbol yang ada, atau gunakan "+" dan "-" untuk menambah atau mengurangi konstanta heksadesimal atau
simbol. Jika Anda membutuhkan ekspresi yang lebih rumit, pertimbangkan untuk menggunakan perintah linker
bahasa dari naskah. Catatan: seharusnya tidak ada ruang putih di antara simbol, yang
tanda sama dengan ("="), dan ekspresi.
--demangle[=gaya]
--tanpa-demangle
Opsi ini mengontrol apakah akan mengubah nama simbol dalam pesan kesalahan dan lainnya
keluaran. Ketika linker diperintahkan untuk demangle, ia mencoba untuk menampilkan nama simbol dalam a
mode yang dapat dibaca: itu menghapus garis bawah utama jika digunakan oleh file objek
format, dan mengubah nama simbol C++ yang rusak menjadi nama yang dapat dibaca pengguna. Berbeda
compiler memiliki gaya mangling yang berbeda. Argumen gaya demangling opsional dapat
digunakan untuk memilih gaya demangling yang sesuai untuk kompiler Anda. Penghubung akan
demangle secara default kecuali variabel lingkungan KUMPULKAN_NO_DEMANGLE diatur. Ini
opsi dapat digunakan untuk mengganti default.
-Ifillet
--dinamis-linker=fillet
Tetapkan nama penaut dinamis. Ini hanya berarti ketika menghasilkan
executable ELF yang terhubung secara dinamis. Penaut dinamis default biasanya benar;
jangan gunakan ini kecuali Anda tahu apa yang Anda lakukan.
--no-dinamis-linker
Saat membuat file yang dapat dieksekusi, abaikan permintaan tautan dinamis untuk digunakan di
waktu muat. Ini hanya berarti untuk executable ELF yang berisi dynamic
relokasi, dan biasanya memerlukan kode titik masuk yang mampu memproses ini
relokasi.
--peringatan-fatal
--tidak-fatal-peringatan
Perlakukan semua peringatan sebagai kesalahan. Perilaku default dapat dipulihkan dengan opsi
--tidak-fatal-peringatan.
--force-exe-akhiran
Pastikan file keluaran memiliki akhiran .exe.
Jika file output tertaut sepenuhnya yang berhasil dibuat tidak memiliki ".exe" atau ".dll"
akhiran, opsi ini memaksa tautan untuk menyalin file keluaran ke salah satu nama yang sama
dengan akhiran ".exe". Opsi ini berguna saat menggunakan makefile Unix yang tidak dimodifikasi pada a
Host Microsoft Windows, karena beberapa versi Windows tidak akan menjalankan gambar kecuali jika
diakhiri dengan akhiran ".exe".
--gc-bagian
--no-gc-bagian
Aktifkan pengumpulan sampah dari bagian input yang tidak digunakan. Itu diabaikan pada target yang melakukannya
tidak mendukung opsi ini. Perilaku default (tidak melakukan sampah ini
koleksi) dapat dipulihkan dengan menentukan --no-gc-bagian pada baris perintah. Catatan
bahwa pengumpulan sampah untuk target format COFF dan PE didukung, tetapi
implementasi saat ini dianggap eksperimental.
--gc-bagian memutuskan bagian input mana yang digunakan dengan memeriksa simbol dan
relokasi. Bagian yang berisi simbol entri dan semua bagian yang berisi
simbol yang tidak ditentukan pada baris perintah akan disimpan, seperti halnya bagian yang berisi
simbol yang direferensikan oleh objek dinamis. Perhatikan bahwa saat membangun perpustakaan bersama,
linker harus berasumsi bahwa simbol yang terlihat direferensikan. Setelah set awal ini
bagian telah ditentukan, tautan secara rekursif menandai seperti yang digunakan setiap bagian
direferensikan oleh relokasi mereka. Lihat --pintu masuk dan --tidak terdefinisi.
Opsi ini dapat diatur saat melakukan tautan parsial (diaktifkan dengan opsi -r). Di dalam
kasus akar simbol yang disimpan harus secara eksplisit ditentukan baik oleh --pintu masuk or
--tidak terdefinisi opsi atau dengan perintah "ENTRY" di skrip tautan.
--print-gc-bagian
--tidak ada-cetak-gc-bagian
Daftar semua bagian yang dihapus oleh pengumpulan sampah. Daftar dicetak di stderr.
Opsi ini hanya efektif jika pengumpulan sampah telah diaktifkan melalui
--gc-bagian) pilihan. Perilaku default (tidak mencantumkan bagian yang
dihapus) dapat dipulihkan dengan menentukan --tidak ada-cetak-gc-bagian di baris perintah.
--cetak-output-format
Cetak nama format output default (mungkin dipengaruhi oleh baris perintah lain
pilihan). Ini adalah string yang akan muncul dalam skrip tautan "OUTPUT_FORMAT"
perintah.
--cetak-memori-penggunaan
Cetak ukuran yang digunakan, ukuran total, dan ukuran wilayah memori yang digunakan yang dibuat dengan MEMORY
memerintah. Ini berguna pada target yang disematkan untuk melihat sekilas jumlah gratis
Penyimpanan. Format output memiliki satu judul dan satu baris per wilayah. Dia
baik dapat dibaca manusia dan mudah diuraikan oleh alat. Berikut adalah contoh outputnya:
Wilayah memori Ukuran Wilayah Digunakan Ukuran % umur Digunakan
ROM: 256 KB 1 MB 25.00%
RAM: 32 B 2 GB 0.00%
--membantu
Cetak ringkasan opsi baris perintah pada output standar dan keluar.
--target-bantuan
Cetak ringkasan semua opsi spesifik target pada output standar dan keluar.
-Peta=berkas peta
Cetak peta tautan ke file berkas peta. Lihat deskripsi -M pilihan, di atas.
--no-keep-memori
ld biasanya mengoptimalkan kecepatan penggunaan memori dengan menyimpan tabel simbol dari
memasukkan file ke dalam memori. Opsi ini memberitahu ld untuk mengoptimalkan penggunaan memori, dengan
membaca ulang tabel simbol seperlunya. Ini mungkin diperlukan jika ld kehabisan
ruang memori saat menghubungkan executable besar.
--tidak-tidak terdefinisi
-z def
Laporkan referensi simbol yang belum terselesaikan dari file objek biasa. Ini dilakukan bahkan jika
penaut membuat perpustakaan bersama non-simbolis. Tombol
--[tidak-]izinkan-shlib-tidak terdefinisi mengontrol perilaku untuk pelaporan yang belum terselesaikan
referensi yang ditemukan di perpustakaan bersama yang ditautkan.
--allow-multi-definition
-z muldef
Biasanya ketika simbol didefinisikan beberapa kali, linker akan melaporkan fatal
kesalahan. Opsi ini memungkinkan beberapa definisi dan definisi pertama akan digunakan.
--izinkan-shlib-tidak terdefinisi
--tidak-izinkan-shlib-tidak terdefinisi
Mengizinkan atau melarang simbol yang tidak ditentukan di pustaka bersama. Saklar ini mirip dengan
--tidak-tidak terdefinisi kecuali bahwa itu menentukan perilaku ketika simbol yang tidak ditentukan adalah
di perpustakaan bersama daripada file objek biasa. Itu tidak mempengaruhi bagaimana
simbol yang tidak ditentukan dalam file objek biasa ditangani.
Perilaku default adalah melaporkan kesalahan untuk simbol yang tidak ditentukan yang dirujuk dalam
pustaka bersama jika tautan digunakan untuk membuat yang dapat dieksekusi, tetapi untuk mengizinkan
mereka jika linker sedang digunakan untuk membuat perpustakaan bersama.
Alasan untuk mengizinkan referensi simbol yang tidak ditentukan di perpustakaan bersama ditentukan di
waktu tautan adalah bahwa:
· Pustaka bersama yang ditentukan pada waktu tautan mungkin tidak sama dengan yang ada
tersedia pada waktu buka, jadi simbol mungkin benar-benar dapat diselesaikan pada waktu buka.
· Ada beberapa sistem operasi, misalnya BeOS dan HPPA, di mana simbol yang tidak ditentukan di
perpustakaan bersama adalah normal.
Kernel BeOS misalnya, menambal pustaka bersama pada waktu buka untuk memilih
fungsi mana yang paling sesuai untuk arsitektur saat ini. Ini adalah
digunakan, misalnya, untuk secara dinamis memilih fungsi memset yang sesuai.
--no-undefined-versi
Biasanya ketika simbol memiliki versi yang tidak ditentukan, linker akan mengabaikannya. Ini
opsi melarang simbol dengan versi yang tidak ditentukan dan kesalahan fatal akan dikeluarkan
sebagai gantinya.
--default-simver
Buat dan gunakan versi simbol default (nama soname) untuk simbol yang diekspor tidak berversi.
--default-import-symver
Buat dan gunakan versi simbol default (soname) untuk simbol impor yang tidak berversi.
--tidak-peringatkan-ketidakcocokan
Biasanya ld akan memberikan kesalahan jika Anda mencoba menautkan file input yang
tidak cocok untuk beberapa alasan, mungkin karena mereka telah dikompilasi untuk yang berbeda
prosesor atau untuk endianness yang berbeda. Opsi ini memberitahu ld bahwa itu harus
diam-diam mengizinkan kemungkinan kesalahan seperti itu. Opsi ini hanya boleh digunakan dengan hati-hati, dalam
kasus ketika Anda telah mengambil beberapa tindakan khusus yang memastikan bahwa kesalahan tautan adalah
tidak pantas.
--tidak ada-peringatkan-pencarian-ketidakcocokan
Biasanya ld akan memberikan peringatan jika menemukan perpustakaan yang tidak kompatibel selama perpustakaan
Cari. Opsi ini membungkam peringatan.
--tidak-seluruh-arsip
Matikan efek --seluruh-arsip pilihan untuk file arsip berikutnya.
--noinhibit-exec
Pertahankan file output yang dapat dieksekusi setiap kali masih dapat digunakan. Biasanya, tautan
tidak akan menghasilkan file output jika menemukan kesalahan selama proses tautan; dia
keluar tanpa menulis file output ketika mengeluarkan kesalahan apa pun.
-nostdlib
Hanya direktori perpustakaan pencarian yang ditentukan secara eksplisit pada baris perintah. Perpustakaan
direktori yang ditentukan dalam skrip tautan (termasuk skrip tautan yang ditentukan di
baris perintah) diabaikan.
--oformat=format output
ld dapat dikonfigurasi untuk mendukung lebih dari satu jenis file objek. Jika Anda ld is
dikonfigurasi dengan cara ini, Anda dapat menggunakan --oformat opsi untuk menentukan format biner untuk
file objek keluaran. Bahkan ketika ld dikonfigurasi untuk mendukung objek alternatif
format, Anda biasanya tidak perlu menentukan ini, karena ld harus dikonfigurasi untuk menghasilkan
sebagai format output default format yang paling biasa pada setiap mesin. format output adalah
string teks, nama format tertentu yang didukung oleh perpustakaan BFD. (Kamu bisa
daftar format biner yang tersedia dengan keberatan -i.) Perintah skrip
"OUTPUT_FORMAT" juga dapat menentukan format output, tetapi opsi ini menimpanya.
-pai
--pic-dapat dieksekusi
Buat posisi yang dapat dieksekusi independen. Saat ini hanya didukung di ELF
platform. Posisi executable independen mirip dengan perpustakaan bersama dalam hal itu
mereka dipindahkan oleh tautan dinamis ke alamat virtual yang dipilih OS
mereka (yang dapat bervariasi antara doa). Seperti executable yang terhubung secara dinamis normal
mereka dapat dieksekusi dan simbol yang didefinisikan dalam yang dapat dieksekusi tidak dapat ditimpa oleh
perpustakaan bersama.
-qajaib
Opsi ini diabaikan untuk kompatibilitas Linux.
-Qy Opsi ini diabaikan untuk kompatibilitas SVR4.
--santai
--tidak-santai
Opsi dengan efek yang bergantung pada mesin. Opsi ini hanya didukung pada beberapa
target.
Pada beberapa platform, --santai opsi melakukan target spesifik, pengoptimalan global
yang menjadi mungkin ketika linker menyelesaikan pengalamatan dalam program, seperti
mode alamat santai, mensintesis instruksi baru, memilih versi yang lebih pendek dari
instruksi saat ini, dan menggabungkan nilai-nilai konstan.
Pada beberapa platform, optimasi global waktu tautan ini dapat membuat debugging simbolis dari
executable yang dihasilkan tidak mungkin. Hal ini diketahui terjadi pada Matsushita
Keluarga prosesor MN10200 dan MN10300.
Pada platform di mana ini tidak didukung, --santai diterima, tetapi diabaikan.
Pada platform di mana --santai diterima pilihannya --tidak-santai dapat digunakan untuk menonaktifkan
fitur tersebut.
--retain-simbol-file=nama file
Menahan hanya simbol yang tercantum dalam file nama file, membuang semua yang lain. nama file
hanyalah sebuah file datar, dengan satu nama simbol per baris. Opsi ini terutama
berguna di lingkungan (seperti VxWorks) di mana tabel simbol global besar adalah
terakumulasi secara bertahap, untuk menghemat memori run-time.
--retain-simbol-file tidak tidak membuang simbol yang tidak terdefinisi, atau simbol yang diperlukan untuk
relokasi.
Anda hanya dapat menentukan --retain-simbol-file sekali di baris perintah. Itu menimpa -s
dan -S.
-rjalur=dir
Tambahkan direktori ke jalur pencarian pustaka runtime. Ini digunakan saat menghubungkan ELF
dieksekusi dengan objek bersama. Semua -rjalan argumen digabungkan dan diteruskan ke
linker runtime, yang menggunakannya untuk menemukan objek bersama saat runtime. NS -rjalan
opsi juga digunakan saat menemukan objek bersama yang dibutuhkan oleh objek bersama
secara eksplisit disertakan dalam tautan; lihat deskripsi -rpath-tautan pilihan. Jika
-rjalan tidak digunakan saat menautkan ELF yang dapat dieksekusi, konten lingkungan
variabel "LD_RUN_PATH" akan digunakan jika sudah didefinisikan.
-rjalan opsi juga dapat digunakan pada SunOS. Secara default, di SunOS, linker akan
membentuk jalur pencarian runtime dari semua -L pilihan yang diberikan. Jika sebuah -rjalan Option
digunakan, jalur pencarian runtime akan dibentuk secara eksklusif menggunakan -rjalan Pilihan
mengabaikan -L pilihan. Ini bisa berguna saat menggunakan gcc, yang menambahkan banyak -L
opsi yang mungkin ada di sistem file yang dipasang NFS.
Untuk kompatibilitas dengan linker ELF lainnya, jika -R opsi diikuti oleh direktori
nama, bukan nama file, itu diperlakukan sebagai -rjalan .
-rpath-tautan=dir
Saat menggunakan ELF atau SunOS, satu perpustakaan bersama mungkin memerlukan yang lain. Ini terjadi ketika
Tautan "ld -shared" menyertakan pustaka bersama sebagai salah satu file input.
Ketika penaut menemukan ketergantungan seperti itu saat melakukan non-shared, non-relocatable
tautan, itu akan secara otomatis mencoba menemukan perpustakaan bersama yang diperlukan dan memasukkannya
di tautan, jika tidak disertakan secara eksplisit. Dalam kasus seperti itu, -rpath-tautan Option
menentukan set direktori pertama yang akan dicari. NS -rpath-tautan pilihan 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 menimpa jalur pencarian yang mungkin ada
telah sulit dikompilasi ke dalam perpustakaan bersama. Dalam kasus seperti itu dimungkinkan untuk menggunakan
secara tidak sengaja jalur pencarian yang berbeda dari runtime linker akan dilakukan.
Penaut menggunakan jalur pencarian berikut untuk menemukan pustaka bersama yang diperlukan:
1. Direktori apa pun yang ditentukan oleh -rpath-tautan Pilihan.
2. Direktori apa pun yang ditentukan oleh -rjalan pilihan. Perbedaan antara -rjalan dan
-rpath-tautan adalah direktori yang ditentukan oleh -rjalan pilihan termasuk dalam
dieksekusi dan digunakan saat runtime, sedangkan -rpath-tautan pilihan hanya efektif
pada waktu tautan. Mencari -rjalan dengan cara ini hanya didukung oleh tautan asli dan
cross linker yang telah dikonfigurasi dengan --dengan-sysroot .
3. Pada sistem ELF, untuk native linker, jika: -rjalan dan -rpath-tautan pilihannya adalah
tidak digunakan, cari konten variabel lingkungan "LD_RUN_PATH".
4. Pada SunOS, jika -rjalan opsi tidak digunakan, cari direktori mana pun yang ditentukan
menggunakan -L Pilihan.
5. Untuk tautan asli, cari konten variabel lingkungan
"LD_LIBRARY_PATH".
6. Untuk linker ELF asli, direktori di "DT_RUNPATH" atau "DT_RPPATH" dari
perpustakaan mencari perpustakaan bersama yang dibutuhkan olehnya. Entri "DT_RPATH" adalah
diabaikan jika ada entri "DT_RUNPATH".
7. Direktori default, biasanya / lib dan / Usr / lib.
8. Untuk linker asli pada sistem ELF, jika file /etc/ld.so.conf ada, daftar
direktori yang ditemukan dalam file itu.
Jika perpustakaan bersama yang diperlukan tidak ditemukan, penaut akan mengeluarkan peringatan dan
lanjutkan dengan tautan.
-bersama
-Dapat dibagikan
Buat perpustakaan bersama. Saat ini hanya didukung di ELF, XCOFF dan SunOS
platform. Di SunOS, penaut akan secara otomatis membuat perpustakaan bersama jika -e
opsi tidak digunakan dan ada simbol yang tidak ditentukan di tautan.
--sort-umum
--sort-common=naik
--sort-common=turun
Opsi ini memberitahu ld untuk mengurutkan simbol-simbol umum dengan menyelaraskan secara menaik atau
urutan menurun ketika menempatkan mereka di bagian output yang sesuai. Simbol
keberpihakan yang dipertimbangkan adalah enam belas byte atau lebih besar, delapan byte, empat byte, dua byte, dan
satu byte. Hal ini untuk mencegah kesenjangan antara simbol karena kendala keselarasan. Jika tidak
urutan penyortiran ditentukan, maka urutan menurun diasumsikan.
--sort-section=nama
Opsi ini akan menerapkan "SORT_BY_NAME" ke semua pola bagian wildcard di penaut
Script.
--sort-section=perataan
Opsi ini akan menerapkan "SORT_BY_ALIGNMENT" ke semua pola bagian wildcard di
skrip penghubung.
--split-demi-file[=ukuran]
Mirip dengan --split-demi-relokasi tetapi membuat bagian keluaran baru untuk setiap file masukan ketika
ukuran tercapai. ukuran default ke ukuran 1 jika tidak diberikan.
--split-by-reloc[=menghitung]
Mencoba membuat bagian tambahan dalam file keluaran sehingga tidak ada bagian keluaran tunggal di
file berisi lebih dari menghitung relokasi. Ini berguna saat menghasilkan besar
file yang dapat dipindahkan untuk diunduh ke kernel waktu nyata tertentu dengan objek COFF
format berkas; karena COFF tidak dapat mewakili lebih dari 65535 relokasi dalam satu
bagian. Perhatikan bahwa ini akan gagal bekerja dengan format file objek yang tidak
mendukung bagian yang sewenang-wenang. Penaut tidak akan membagi bagian input individual
untuk redistribusi, jadi jika satu bagian input berisi lebih dari menghitung relokasi
satu bagian output akan berisi banyak relokasi. menghitung default ke nilai
32768.
--statistik
Hitung dan tampilkan statistik tentang pengoperasian linker, seperti eksekusi
penggunaan waktu dan memori.
--sysroot=direktori
penggunaan direktori sebagai lokasi sysroot, mengesampingkan default waktu konfigurasi.
Opsi ini hanya didukung oleh tautan yang dikonfigurasi menggunakan --dengan-sysroot.
--format-tradisional
Untuk beberapa target, output dari ld berbeda dalam beberapa hal dari output beberapa
penghubung yang ada. Peralihan ini meminta ld untuk menggunakan format tradisional sebagai gantinya.
Misalnya, pada 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 "dbx" SunOS tidak dapat membaca program yang dihasilkan
("gdb" tidak memiliki masalah). NS --format-tradisional beralih memberitahu ld untuk tidak menggabungkan
entri duplikat.
--bagian-mulai=nama bagian=org
Temukan bagian dalam file output di alamat absolut yang diberikan oleh org. Anda dapat menggunakan
opsi ini sebanyak yang diperlukan untuk menemukan beberapa bagian dalam perintah
line. org harus berupa bilangan bulat heksadesimal tunggal; untuk kompatibilitas dengan linker lain,
Anda dapat menghilangkan yang terkemuka 0x biasanya dikaitkan dengan nilai heksadesimal. Catatan: sana
seharusnya tidak ada ruang putih di antara nama bagian, tanda sama dengan ("="), dan org.
-Tbs =org
-Data=org
-Tteks=org
Sama dengan --bagian-mulai, dengan ".bss", ".data" atau ".text" sebagai nama bagian.
-Tteks-segmen=org
Saat membuat ELF yang dapat dieksekusi, itu akan mengatur alamat byte pertama teks
segmen.
-Trodata-segmen=org
Saat membuat objek yang dapat dieksekusi atau dibagikan ELF untuk target di mana data hanya-baca
berada di segmennya sendiri yang terpisah dari teks yang dapat dieksekusi, itu akan mengatur alamat
byte pertama dari segmen data read-only.
-Tldata-segmen=org
Saat membuat objek yang dapat dieksekusi atau dibagikan ELF untuk model memori sedang x86-64, itu
akan mengatur alamat byte pertama dari segmen ldata.
--belum terselesaikan-simbol=metode
Tentukan bagaimana menangani simbol yang belum terselesaikan. Ada empat kemungkinan nilai untuk
metode:
abaikan semua
Jangan laporkan simbol yang belum terselesaikan.
laporkan semua
Laporkan semua simbol yang belum terselesaikan. Ini adalah default.
abaikan-dalam-objek-file
Laporkan simbol yang belum terselesaikan yang terdapat di perpustakaan bersama, tetapi abaikan saja
jika mereka berasal dari file objek biasa.
abaikan-di-berbagi-libs
Laporkan simbol yang belum terselesaikan yang berasal dari file objek biasa, tetapi abaikan jika
mereka berasal dari perpustakaan bersama. Ini bisa berguna saat membuat dinamika
biner dan diketahui bahwa semua perpustakaan bersama yang harus dirujuk
disertakan pada baris perintah linker.
Perilaku untuk perpustakaan bersama sendiri juga dapat dikontrol oleh
--[tidak-]izinkan-shlib-tidak terdefinisi .
Biasanya tautan akan menghasilkan pesan kesalahan untuk setiap simbol yang belum terselesaikan yang dilaporkan
tapi pilihan --peringatan-belum terselesaikan-simbol dapat mengubah ini menjadi peringatan.
--dll-verbose
--verbose[=NOMOR]
Tampilkan nomor versi untuk ld dan daftar emulasi linker yang didukung. Menampilkan
file input mana yang bisa dan tidak bisa dibuka. Tampilkan skrip tautan yang digunakan oleh
penghubung. Jika opsional NOMOR argumen> 1, status simbol plugin juga akan
ditampilkan.
--versi-skrip=versi-scriptfile
Tentukan nama skrip versi ke linker. Ini biasanya digunakan ketika
membuat perpustakaan bersama untuk menentukan informasi tambahan tentang versi
hierarki untuk perpustakaan yang sedang dibuat. Opsi ini hanya didukung penuh di ELF
platform yang mendukung perpustakaan bersama; Lihat VERSION. Ini didukung sebagian di
Platform PE, yang dapat menggunakan skrip versi untuk memfilter visibilitas simbol dalam ekspor otomatis
mode: simbol apa pun yang ditandai lokal dalam skrip versi tidak akan diekspor.
--peringatan-umum
Peringatkan ketika simbol umum digabungkan dengan simbol umum lainnya atau dengan simbol
definisi. Linker Unix memungkinkan praktik yang agak ceroboh ini, tetapi linker pada beberapa
sistem operasi lain tidak. Opsi ini memungkinkan Anda menemukan potensi masalah
dari menggabungkan simbol global. Sayangnya, beberapa pustaka C menggunakan praktik ini, jadi
Anda mungkin mendapatkan beberapa peringatan tentang simbol di perpustakaan serta di program Anda.
Ada tiga jenis simbol global, diilustrasikan di sini dengan contoh C:
int i = 1;
Definisi, yang masuk di bagian data yang diinisialisasi dari file output.
luar int i;
Referensi yang tidak ditentukan, yang tidak mengalokasikan ruang. Harus ada
definisi atau simbol umum untuk variabel di suatu tempat.
int i;
Sebuah simbol umum. Jika hanya ada (satu atau lebih) simbol umum untuk suatu variabel,
itu berjalan di area data yang tidak diinisialisasi dari file output. Penghubung bergabung
beberapa simbol umum untuk variabel yang sama menjadi satu simbol. Jika mereka adalah
ukuran yang berbeda, ia mengambil ukuran terbesar. Penghubung mengubah simbol umum
menjadi deklarasi, jika ada definisi dari variabel yang sama.
--peringatan-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 ditemui dengan nama yang sama. Salah satu atau keduanya
simbol akan menjadi simbol umum.
1. Mengubah simbol umum menjadi referensi, karena sudah ada definisinya
untuk simbol.
( ): peringatan: umum dari ` '
ditimpa oleh definisi
( ): peringatan: didefinisikan di sini
2. Mengubah simbol umum menjadi referensi, karena definisi selanjutnya untuk
simbol yang dihadapi. Ini sama dengan kasus sebelumnya, kecuali bahwa
simbol ditemukan dalam urutan yang berbeda.
( ): peringatan: definisi dari ` '
mengesampingkan umum
( ): peringatan: umum ada di sini
3. Menggabungkan simbol umum dengan simbol umum sebelumnya yang berukuran sama.
( ): peringatan: beberapa umum
dari ` '
( ): peringatan: umum sebelumnya ada di sini
4. Menggabungkan simbol umum dengan simbol umum sebelumnya yang lebih besar.
( ): peringatan: umum dari ` '
ditimpa oleh common yang lebih besar
( ): peringatan: umum yang lebih besar ada di sini
5. Menggabungkan simbol umum dengan simbol umum yang lebih kecil sebelumnya. Ini sama
seperti kasus sebelumnya, kecuali bahwa simbol-simbol tersebut ditemui di tempat yang berbeda
ketertiban.
( ): peringatan: umum dari ` '
mengesampingkan umum yang lebih kecil
( ): peringatan: umum yang lebih kecil ada di sini
--peringatkan-konstruktor
Peringatkan jika ada konstruktor global yang digunakan. Ini hanya berguna untuk beberapa file objek
format. Untuk format seperti COFF atau ELF, linker tidak dapat mendeteksi penggunaan global
konstruktor.
--peringatkan-beberapa-gp
Peringatkan jika beberapa nilai penunjuk global diperlukan dalam file keluaran. Hanya ini
berarti untuk prosesor tertentu, seperti Alpha. Secara khusus, beberapa prosesor
letakkan konstanta bernilai besar di bagian khusus. Sebuah register khusus (global
pointer) menunjuk ke tengah bagian ini, sehingga konstanta dapat dimuat
efisien melalui mode pengalamatan relatif register-basis. Karena offset di basis-
mendaftar mode relatif tetap dan relatif kecil (misalnya, 16 bit), ini membatasi
ukuran maksimum kolam konstan. Jadi, dalam program besar, seringkali perlu untuk
gunakan beberapa nilai penunjuk global agar dapat mengatasi semua kemungkinan
konstanta. Opsi ini menyebabkan peringatan dikeluarkan setiap kali kasus ini terjadi.
--peringatkan-sekali
Hanya peringatkan sekali untuk setiap simbol yang tidak ditentukan, bukan sekali per modul yang mengacu pada
.
--peringatkan-bagian-selaras
Peringatkan jika alamat bagian keluaran diubah karena penyelarasan. Khas,
keselarasan akan diatur oleh bagian input. Alamat hanya akan diubah jika
tidak secara eksplisit ditentukan; yaitu, jika perintah "BAGIAN" tidak menentukan awal
alamat untuk bagian.
--memperingatkan-berbagi-textrel
Peringatkan jika penaut menambahkan DT_TEXTREL ke objek bersama.
--warn-alternatif-em
Peringatkan jika suatu objek memiliki kode mesin ELF alternatif.
--peringatan-belum terselesaikan-simbol
Jika penaut akan melaporkan simbol yang belum terselesaikan (lihat opsi
--belum terselesaikan-simbol) biasanya akan menghasilkan kesalahan. Opsi ini membuatnya
menghasilkan peringatan sebagai gantinya.
--error-unresolved-simbol
Ini mengembalikan perilaku default penaut yang menghasilkan kesalahan saat melaporkan
simbol yang belum terselesaikan.
--seluruh-arsip
Untuk setiap arsip yang disebutkan pada baris perintah setelah --seluruh-arsip pilihan,
sertakan setiap file objek dalam arsip di tautan, daripada mencari
arsip untuk file objek yang diperlukan. Ini biasanya digunakan untuk mengubah file arsip
ke perpustakaan bersama, memaksa setiap objek untuk dimasukkan dalam hasil bersama
Perpustakaan. Opsi ini dapat digunakan lebih dari sekali.
Dua catatan saat menggunakan opsi ini dari gcc: Pertama, gcc tidak tahu tentang opsi ini,
jadi harus pakai -Wl,-seluruh-arsip. Kedua, jangan lupa untuk menggunakan
-Wl,-tidak-seluruh-arsip setelah daftar arsip Anda, karena gcc akan menambahkan daftarnya sendiri
arsip ke tautan Anda dan Anda mungkin tidak ingin tanda ini memengaruhinya juga.
--bungkus=simbol
Gunakan fungsi pembungkus untuk simbol. Setiap referensi yang tidak ditentukan ke simbol akan diselesaikan
untuk membungkus_simbol". Setiap referensi yang tidak ditentukan ke "__real_simbol" akan diselesaikan untuk
simbol.
Ini dapat digunakan untuk menyediakan pembungkus untuk fungsi sistem. Fungsi pembungkus
harus disebut "__wrap_simbol". Jika ingin memanggil fungsi sistem, itu harus
panggil "__real_simbol".
Berikut adalah contoh sepele:
ruang kosong *
__wrap_malloc (ukuran_t c)
{
printf("malloc dipanggil dengan %zu\n", c);
kembali __real_malloc (c);
}
Jika Anda menautkan kode lain dengan file ini menggunakan --membungkus malloc, lalu semua panggilan ke "malloc"
akan memanggil fungsi "__wrap_malloc" sebagai gantinya. Panggilan ke "__real_malloc" di
"__wrap_malloc" akan memanggil fungsi "malloc" yang sebenarnya.
Anda mungkin ingin menyediakan fungsi "__real_malloc" juga, sehingga menautkan tanpa
--membungkus pilihan akan berhasil. Jika Anda melakukan ini, Anda seharusnya tidak memasukkan definisi dari
"__real_malloc" dalam file yang sama dengan "__wrap_malloc"; jika Anda melakukannya, assembler mungkin
selesaikan panggilan sebelum tautan memiliki kesempatan untuk membungkusnya ke "malloc".
--eh-bingkai-hdr
Minta pembuatan bagian ".eh_frame_hdr" dan header segmen "PT_GNU_EH_FRAME" ELF.
--no-ld-generated-unwind-info
Minta pembuatan info pelepasan ".eh_frame" untuk bagian kode yang dihasilkan tautan seperti
PLT. Opsi ini aktif secara default jika info pelepasan yang dihasilkan penaut didukung.
--aktifkan-tag-baru
--nonaktifkan-dtag-baru
Linker ini dapat membuat tag dinamis baru di ELF. Tetapi sistem ELF yang lebih tua mungkin tidak
mengerti mereka. Jika Anda menentukan --aktifkan-tag-baru, tag dinamis baru akan menjadi
dibuat sesuai kebutuhan dan tag dinamis yang lebih lama akan dihilangkan. Jika Anda menentukan
--nonaktifkan-dtag-baru, tidak ada tag dinamis baru yang akan dibuat. Secara default, dinamika baru
tag tidak dibuat. Perhatikan bahwa opsi tersebut hanya tersedia untuk sistem ELF.
--ukuran hash=jumlah
Setel ukuran default tabel hash tautan ke bilangan prima yang mendekati jumlah.
Meningkatkan nilai ini dapat mengurangi lamanya waktu yang dibutuhkan linker untuk melakukan tugasnya
tugas, dengan mengorbankan peningkatan kebutuhan memori linker. Demikian pula
mengurangi nilai ini dapat mengurangi kebutuhan memori dengan mengorbankan kecepatan.
--gaya hash=gaya
Setel jenis tabel hash penaut. gaya dapat berupa "sysv" untuk ELF klasik
bagian ".hash", "gnu" untuk GNU gaya baru ".gnu.hash" atau "keduanya" untuk keduanya
tabel hash ".hash" ELF klasik dan gaya baru GNU ".gnu.hash". Standarnya adalah "sysv".
--compress-debug-sections=tidak ada
--kompres-debug-bagian=zlib
--kompres-debug-bagian=zlib-gnu
--kompres-debug-bagian=zlib-gabi
Pada platform ELF, opsi ini mengontrol bagaimana bagian debug DWARF dikompres menggunakan
zlib. --compress-debug-sections=tidak ada tidak memampatkan bagian debug DWARF.
--kompres-debug-bagian=zlib-gnu kompres bagian debug DWARF dan ganti nama debug
nama bagian untuk memulai .zdebug alih-alih .debug. --kompres-debug-bagian=zlib
dan --kompres-debug-bagian=zlib-gabi kompres bagian debug DWARF dengan
SHF_COMPRESSED dari ELF ABI. Perilaku default bervariasi tergantung pada
target yang terlibat dan opsi konfigurasi yang digunakan untuk membangun rantai alat. Standarnya
dapat ditentukan dengan memeriksa output dari linker's --membantu .
--mengurangi-memori-overhead
Opsi ini mengurangi kebutuhan memori pada waktu proses ld, dengan mengorbankan penautan
kecepatan. Ini diperkenalkan untuk memilih algoritma O(n^2) lama untuk file peta tautan
generasi, daripada algoritma O(n) baru yang menggunakan sekitar 40% lebih banyak memori untuk
penyimpanan simbol.
Efek lain dari sakelar adalah mengatur ukuran tabel hash default ke 1021, yang
lagi menghemat memori dengan biaya memperpanjang waktu menjalankan linker. Ini tidak dilakukan
namun jika --ukuran hash saklar telah digunakan.
--mengurangi-memori-overhead switch juga dapat digunakan untuk mengaktifkan tradeoff lainnya di
versi linker yang akan datang.
--membangun-id
--membangun-id=gaya
Meminta pembuatan bagian catatan ELF ".note.gnu.build-id" atau COFF ".buildid"
bagian. Isi catatan adalah bit unik yang mengidentifikasi file tertaut ini.
gaya bisa "uuid" untuk menggunakan 128 bit acak, "sha1" untuk menggunakan hash SHA160 1-bit pada
bagian normatif dari konten keluaran, "md5" untuk menggunakan hash MD128 5-bit pada
bagian normatif dari konten keluaran, atau "0xhexstring" untuk menggunakan string bit yang dipilih
ditentukan sebagai angka genap digit heksadesimal ("-" dan ":" karakter antara
pasangan digit diabaikan). Jika gaya dihilangkan, "sha1" digunakan.
Gaya "md5" dan "sha1" menghasilkan pengenal yang selalu sama dalam
file output yang identik, tetapi akan menjadi unik di antara semua file output yang tidak identik. Dia
tidak dimaksudkan untuk dibandingkan sebagai checksum untuk isi file. File yang ditautkan mungkin
diubah nanti oleh alat lain, tetapi string bit ID build mengidentifikasi yang asli
file tertaut tidak berubah.
Melewati "tidak ada" untuk gaya menonaktifkan pengaturan dari opsi "--build-id" sebelumnya
baris perintah.
Penaut i386 PE mendukung -bersama opsi, yang menyebabkan output menjadi
perpustakaan yang ditautkan secara dinamis (DLL) alih-alih executable normal. Anda harus memberi nama
output "*.dll" saat Anda menggunakan opsi ini. Selain itu, tautan sepenuhnya mendukung
file standar "*.def", yang dapat ditentukan pada baris perintah linker seperti objek
file (sebenarnya, itu harus mendahului arsip yang mengekspor simbol, untuk memastikan bahwa mereka mendapatkan
ditautkan, seperti file objek normal).
Selain opsi yang umum untuk semua target, linker PE i386 mendukung tambahan
opsi baris perintah yang khusus untuk target PE i386. Opsi yang mengambil nilai
dapat dipisahkan dari nilainya dengan spasi atau tanda sama dengan.
--tambahkan-stdcall-alias
Jika diberikan, simbol dengan akhiran stdcall (@nn) akan diekspor apa adanya dan juga dengan
akhiran dilucuti. [Opsi ini khusus untuk port penaut i386 PE yang ditargetkan]
--berkas dasar fillet
penggunaan fillet sebagai nama file untuk menyimpan alamat dasar semua
relokasi yang diperlukan untuk menghasilkan DLL dengan dlltool. [Ini khusus PE i386
pilihan]
--dll
Buat DLL alih-alih executable biasa. Anda juga dapat menggunakan -bersama atau tentukan a
"PERPUSTAKAAN" dalam file ".def" yang diberikan. [Opsi ini khusus untuk i386 PE yang ditargetkan
pelabuhan penghubung]
--aktifkan-nama-bagian-panjang
--nonaktifkan-nama-bagian-panjang
Varian PE dari format objek COFF menambahkan ekstensi yang memungkinkan penggunaan
nama bagian lebih dari delapan karakter, batas normal untuk COFF. Secara default,
nama-nama ini hanya diperbolehkan dalam file objek, karena gambar yang dapat dieksekusi yang ditautkan sepenuhnya tidak
membawa tabel string COFF yang diperlukan untuk mendukung nama yang lebih panjang. Sebagai ekstensi GNU,
dimungkinkan untuk mengizinkan penggunaannya dalam gambar yang dapat dieksekusi juga, atau untuk (mungkin
sia-sia!) larang dalam file objek, dengan menggunakan dua opsi ini. Dapat dieksekusi
gambar yang dihasilkan dengan nama bagian yang panjang ini sedikit tidak standar, sebagai
mereka melakukan tabel string, dan dapat menghasilkan keluaran yang membingungkan ketika diperiksa dengan non-GNU
Alat sadar PE, seperti penampil file dan dumper. Namun, GDB bergantung pada penggunaan
Nama bagian panjang PE untuk menemukan bagian informasi debug Dwarf-2 dalam executable
image saat runtime, dan jika tidak ada opsi yang ditentukan pada baris perintah, ld akan
mengaktifkan nama bagian yang panjang, mengesampingkan perilaku default dan benar secara teknis,
ketika menemukan adanya informasi debug saat menautkan gambar yang dapat dieksekusi dan
tidak menghilangkan simbol. [Opsi ini berlaku untuk semua port penaut yang ditargetkan PE]
--aktifkan-stdcall-fixup
--disable-stdcall-fixup
Jika tautan menemukan simbol yang tidak dapat diselesaikan, ia akan mencoba melakukan "fuzzy
menghubungkan" dengan mencari simbol lain yang ditentukan yang hanya berbeda dalam format
nama simbol (cdecl vs stdcall) dan akan menyelesaikan simbol itu dengan menautkan ke kecocokan.
Misalnya, simbol yang tidak ditentukan "_foo" mungkin ditautkan ke fungsi "_foo@12", atau
simbol yang tidak ditentukan "_bar@16" mungkin ditautkan ke fungsi "_bar". Ketika
linker melakukan ini, ia mencetak peringatan, karena biasanya gagal untuk menautkan,
tetapi terkadang perpustakaan impor yang dihasilkan dari dll pihak ketiga mungkin memerlukan fitur ini
untuk dapat digunakan. Jika Anda menentukan --aktifkan-stdcall-fixup, fitur ini diaktifkan sepenuhnya
dan peringatan tidak dicetak. Jika Anda menentukan --disable-stdcall-fixup, fitur ini adalah
dinonaktifkan dan ketidakcocokan tersebut dianggap sebagai kesalahan. [Opsi ini khusus untuk
port tautan yang ditargetkan i386 PE]
--memimpin-garis bawah
--tidak ada garis bawah utama
Untuk sebagian besar target, awalan simbol default adalah garis bawah dan didefinisikan dalam target's
keterangan. Dengan opsi ini dimungkinkan untuk menonaktifkan/mengaktifkan garis bawah default
simbol-awalan.
--ekspor-semua-simbol
Jika diberikan, semua simbol global dalam objek yang digunakan untuk membangun DLL akan diekspor oleh
DLL-nya. Perhatikan bahwa ini adalah default jika tidak ada yang diekspor
simbol. Ketika simbol diekspor secara eksplisit melalui file DEF atau diekspor secara implisit
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 dimulai dengan "_head_" atau diakhiri dengan
"_nama". 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 C++ DLL. Akhirnya, ada daftar ekstensif dari
simbol cygwin-private yang tidak diekspor (jelas, ini berlaku saat membangun
DLL untuk target cygwin). Pengecualian cygwin ini adalah: "_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 "lingkungan". [Opsi ini khusus untuk i386 PE yang ditargetkan
pelabuhan penghubung]
--kecuali-simbol simbol,simbol...
Menentukan daftar simbol yang tidak boleh diekspor secara otomatis. Simbol
nama dapat dipisahkan dengan koma atau titik dua. [Opsi ini khusus untuk i386 PE
port penaut yang ditargetkan]
--kecualikan-semua-simbol
Menentukan tidak ada simbol yang harus diekspor secara otomatis. [Opsi ini khusus untuk
port tautan yang ditargetkan i386 PE]
--penyelarasan file
Tentukan perataan file. Bagian dalam file akan selalu dimulai pada offset file
yang merupakan kelipatan dari bilangan tersebut. Ini default ke 512. [Opsi ini khusus
ke port tautan yang ditargetkan i386 PE]
--tumpukan cadangan
--tumpukan cadangan,melakukan
Tentukan jumlah byte memori yang akan dicadangkan (dan secara opsional dikomit) untuk digunakan sebagai
tumpukan untuk program ini. Standarnya adalah 1MB dicadangkan, 4K berkomitmen. [Opsi ini adalah
khusus untuk port tautan yang ditargetkan i386 PE]
--gambar-dasar nilai
penggunaan nilai sebagai alamat dasar program Anda atau dll. Ini adalah memori terendah
lokasi yang akan digunakan saat program atau dll Anda dimuat. Untuk mengurangi kebutuhan untuk
pindahkan dan tingkatkan kinerja dll Anda, masing-masing harus memiliki alamat dasar yang unik
dan tidak tumpang tindih dengan dll lainnya. Standarnya adalah 0x400000 untuk executable, dan
0x10000000 untuk dll. [Opsi ini khusus untuk port target i386 PE dari
penghubung]
--bunuh-at
Jika diberikan, sufiks stdcall (@nn) akan dilucuti dari simbol sebelum mereka
diekspor. [Opsi ini khusus untuk port tautan yang ditargetkan i386 PE]
--besar-alamat-sadar
Jika diberikan, bit yang sesuai di bidang "Karakteristik" dari header COFF diatur
untuk menunjukkan bahwa executable ini mendukung alamat virtual yang lebih besar dari 2 gigabyte.
Ini harus digunakan bersama dengan /3GB atau /USERVA=nilai megabyte beralih
bagian "[sistem operasi]" dari BOOT.INI. Jika tidak, bit ini tidak berpengaruh.
[Opsi ini khusus untuk port linker yang ditargetkan PE]
--nonaktifkan-alamat-besar-sadar
Mengembalikan efek dari sebelumnya --besar-alamat-sadar pilihan. Ini berguna jika
--besar-alamat-sadar selalu disetel oleh driver compiler (misalnya Cygwin gcc) dan
executable tidak mendukung alamat virtual yang lebih besar dari 2 gigabyte. [Pilihan ini
khusus untuk port tautan yang ditargetkan PE]
--mayor-image-version nilai
Menetapkan nomor utama dari "versi gambar". Default ke 1. [Opsi ini adalah
khusus untuk port tautan yang ditargetkan i386 PE]
--mayor-os-versi nilai
Menetapkan nomor utama dari "versi os". Default ke 4. [Opsi ini khusus
ke port tautan yang ditargetkan i386 PE]
--mayor-subsistem-versi nilai
Menetapkan nomor utama dari "versi subsistem". Default ke 4. [Opsi ini adalah
khusus untuk port tautan yang ditargetkan i386 PE]
--minor-gambar-versi nilai
Menyetel jumlah kecil dari "versi gambar". Default ke 0. [Opsi ini adalah
khusus untuk port tautan yang ditargetkan i386 PE]
--minor-os-versi nilai
Menyetel jumlah kecil dari "versi os". Default ke 0. [Opsi ini khusus
ke port tautan yang ditargetkan i386 PE]
--minor-subsistem-versi nilai
Menetapkan jumlah kecil dari "versi subsistem". Default ke 0. [Opsi ini adalah
khusus untuk port tautan yang ditargetkan i386 PE]
--keluaran-def fillet
Linker akan membuat file fillet yang akan berisi file DEF yang sesuai dengan
DLL yang dihasilkan oleh linker. File DEF ini (yang seharusnya disebut "*.def") mungkin
digunakan untuk membuat perpustakaan impor dengan "dlltool" atau dapat digunakan sebagai referensi untuk
simbol yang diekspor secara otomatis atau implisit. [Opsi ini khusus untuk i386 PE
port penaut yang ditargetkan]
--keluar-implib fillet
Linker akan membuat file fillet yang akan berisi lib impor yang sesuai dengan
DLL yang dihasilkan oleh linker. Lib impor ini (yang seharusnya disebut "*.dll.a" atau
"*.a" dapat digunakan untuk menghubungkan klien dengan DLL yang dihasilkan; perilaku ini membuatnya
mungkin untuk melewati langkah pembuatan perpustakaan impor "dlltool" yang terpisah. [Opsi ini adalah
khusus untuk port tautan yang ditargetkan i386 PE]
--aktifkan-basis gambar-otomatis
--aktifkan-auto-gambar-basis=nilai
Secara otomatis memilih basis gambar untuk DLL, opsional dimulai dengan basis nilai,
kecuali ada yang ditentukan menggunakan argumen "--image-base". Dengan menggunakan hash yang dihasilkan
dari nama dll untuk membuat basis gambar unik untuk setiap DLL, tabrakan dalam memori dan
relokasi yang dapat menunda eksekusi program dapat dihindari. [Opsi ini khusus
ke port tautan yang ditargetkan i386 PE]
--nonaktifkan-auto-image-base
Jangan secara otomatis menghasilkan basis gambar yang unik. Jika tidak ada yang ditentukan pengguna
image base ("--image-base") kemudian gunakan platform default. [Opsi ini khusus
ke port tautan yang ditargetkan i386 PE]
--dll-pencarian-awalan string
Saat menautkan secara dinamis ke dll tanpa perpustakaan impor, cari
" .dll" dalam preferensi untuk "lib .dll". Perilaku ini memungkinkan
perbedaan mudah antara DLL yang dibuat untuk berbagai "subplatform": native, cygwin,
uwin, pw, dll. Misalnya, DLL cygwin biasanya menggunakan "--dll-search-prefix=cyg".
[Opsi ini khusus untuk port tautan yang ditargetkan i386 PE]
--aktifkan-impor otomatis
Lakukan penautan canggih "_symbol" ke "__imp__symbol" untuk impor DATA dari DLL,
dan buat simbol thunking yang diperlukan saat membangun perpustakaan impor dengan
ekspor DATA tersebut. Catatan: Penggunaan ekstensi 'impor otomatis' akan menyebabkan teks
bagian dari file gambar yang akan dibuat dapat ditulis. Ini tidak sesuai dengan PE-COFF
spesifikasi format yang diterbitkan oleh Microsoft.
Catatan - penggunaan ekstensi 'impor otomatis' juga akan menyebabkan data hanya baca yang akan
biasanya ditempatkan ke bagian .rdata untuk ditempatkan ke bagian .data
sebagai gantinya. Ini untuk mengatasi masalah dengan konstanta yang dijelaskan
sini: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
Menggunakan 'impor otomatis' umumnya akan 'berfungsi' -- tetapi terkadang Anda mungkin melihat ini
pesan:
"variabel ' ' tidak dapat diimpor secara otomatis. Harap baca dokumentasi untuk ld's
"--enable-auto-import" untuk detailnya."
Pesan ini terjadi ketika beberapa (sub)ekspresi mengakses alamat yang akhirnya diberikan oleh
jumlah dari dua konstanta (tabel impor Win32 hanya mengizinkan satu). Contoh di mana ini
mungkin terjadi termasuk akses ke bidang anggota variabel struct yang diimpor dari DLL,
serta menggunakan indeks konstan ke dalam variabel array yang diimpor dari DLL. Setiap
variabel multiword (array, struct, long long, dll) dapat memicu kondisi kesalahan ini.
Namun, terlepas dari tipe data yang tepat dari variabel yang diekspor yang melanggar, ld akan
selalu mendeteksinya, mengeluarkan peringatan, dan keluar.
Ada beberapa cara untuk mengatasi kesulitan ini, terlepas dari tipe data dari
variabel yang diekspor:
Salah satu caranya adalah dengan menggunakan --enable-runtime-pseudo-reloc switch. Ini meninggalkan tugas
menyesuaikan referensi dalam kode klien Anda untuk lingkungan runtime, jadi metode ini berfungsi
hanya jika lingkungan runtime mendukung fitur ini.
Solusi kedua adalah memaksa salah satu 'konstanta' menjadi variabel -- yaitu,
tidak diketahui dan tidak dapat dioptimalkan pada waktu kompilasi. Untuk array, ada dua kemungkinan:
a) buat yang diindeks (alamat array) sebagai variabel, atau b) buat indeks 'konstan'
sebuah variabel. Dengan demikian:
tipe extern extern_array[];
extern_array[1] -->
{ tipe volatil *t=extern_array; t[1] }
or
tipe extern extern_array[];
extern_array[1] -->
{ mudah menguap int t=1; extern_array[t] }
Untuk struct (dan sebagian besar tipe data multiword lainnya) satu-satunya pilihan adalah membuat
struct itu sendiri (atau panjang panjang, atau ...) variabel:
struct eksternal s extern_struct;
extern_struct.field -->
{ struct volatil s *t=&extern_struct; t->bidang }
or
extern panjang extern_ll;
extern_ll -->
{ volatile long long * local_ll=&extern_ll; *lokal_ll }
Metode ketiga untuk mengatasi kesulitan ini adalah dengan mengabaikan 'impor otomatis' untuk
simbol yang menyinggung dan tandai dengan "__declspec(dllimport)". Namun, dalam praktiknya
memerlukan penggunaan #defines waktu kompilasi untuk menunjukkan apakah Anda sedang membangun DLL,
membangun kode klien yang akan menautkan ke DLL, atau hanya membangun/menautkan ke statis
Perpustakaan. Dalam membuat pilihan di antara berbagai metode penyelesaian masalah 'langsung'
mengatasi masalah offset konstan, Anda harus mempertimbangkan penggunaan dunia nyata yang khas:
Asli:
--foo.h
eksternal int arr[];
--foo.c
#sertakan "foo.h"
batal main(int argc, char **argv){
printf("%d\n",arr[1]);
}
Solusi 1:
--foo.h
eksternal int arr[];
--foo.c
#sertakan "foo.h"
batal main(int argc, char **argv){
/* Solusi ini untuk win32 dan cygwin; jangan "mengoptimalkan" */
volatil int *parr = arr;
printf("%d\n",parr[1]);
}
Solusi 2:
--foo.h
/* Catatan: ekspor otomatis diasumsikan (tidak ada __declspec(dllexport)) */
#if (didefinisikan(_WIN32) || didefinisikan(__CYGWIN__)) && \
!(didefinisikan(FOO_BUILD_DLL) || didefinisikan(FOO_STATIC))
#define FOO_IMPORT __declspec(dllimport)
#lain
#tentukan FOO_IMPORT
#berakhir jika
eksternal FOO_IMPORT int arr[];
--foo.c
#sertakan "foo.h"
batal main(int argc, char **argv){
printf("%d\n",arr[1]);
}
Cara keempat untuk menghindari masalah ini adalah dengan mengkode ulang perpustakaan Anda untuk menggunakan fungsi
antarmuka daripada antarmuka data untuk variabel yang menyinggung (mis set_foo() dan
dapatkan_foo() fungsi pengakses). [Opsi ini khusus untuk port target i386 PE
penghubung]
--nonaktifkan-impor otomatis
Jangan mencoba melakukan penautan canggih "_symbol" ke "__imp__symbol" untuk DATA
impor dari DLL. [Opsi ini khusus untuk port target i386 PE dari
penghubung]
--aktifkan-runtime-pseudo-reloc
Jika kode Anda berisi ekspresi yang dijelaskan di bagian --enable-auto-import, yaitu,
Impor DATA dari DLL dengan offset bukan nol, sakelar ini akan membuat vektor
'relokasi semu runtime' yang dapat digunakan oleh lingkungan runtime untuk menyesuaikan
referensi ke data tersebut dalam kode klien Anda. [Opsi ini khusus untuk i386 PE
port penaut yang ditargetkan]
--nonaktifkan-runtime-pseudo-reloc
Jangan membuat relokasi semu untuk impor DATA non-zero offset dari DLL. [Ini
opsi khusus untuk port tautan yang ditargetkan i386 PE]
--aktifkan-ekstra-pe-debug
Tampilkan info debug tambahan terkait dengan auto-import simbol thunking. [Opsi ini adalah
khusus untuk port tautan yang ditargetkan i386 PE]
--bagian-penyelarasan
Mengatur perataan bagian. Bagian dalam memori akan selalu dimulai pada alamat yang
adalah kelipatan dari bilangan ini. Default ke 0x1000. [Opsi ini khusus untuk
i386 PE port yang ditargetkan dari tautan]
--tumpukan cadangan
--tumpukan cadangan,melakukan
Tentukan jumlah byte memori yang akan dicadangkan (dan secara opsional dikomit) untuk digunakan sebagai
tumpukan untuk program ini. Standarnya adalah 2MB dicadangkan, 4K berkomitmen. [Opsi ini adalah
khusus untuk port tautan yang ditargetkan i386 PE]
--subsistem yang
--subsistem yang:utama
--subsistem yang:utama.minor
Menentukan subsistem di mana program Anda akan dijalankan. Nilai hukum untuk
yang adalah "asli", "windows", "konsol", "posix", dan "xbox". Anda dapat mengatur secara opsional
versi subsistem juga. Nilai numerik juga diterima untuk yang. [Pilihan ini
khusus untuk port linker yang ditargetkan i386 PE]
Opsi berikut mengatur tanda di bidang "DllCharacteristics" dari file PE:
header: [Opsi ini khusus untuk port tautan yang ditargetkan PE]
--entropi-va tinggi
Gambar kompatibel dengan pengacakan tata letak ruang alamat 64-bit (ASLR).
--dinamis dasar
Alamat dasar gambar dapat dipindahkan menggunakan pengacakan tata letak ruang alamat
(ASLR). Fitur ini diperkenalkan dengan MS Windows Vista untuk target PE i386.
--forceinteg
Pemeriksaan integritas kode diberlakukan.
--nxcompat
Gambar kompatibel dengan Pencegahan Eksekusi Data. Fitur ini adalah
diperkenalkan dengan MS Windows XP SP2 untuk target PE i386.
--tanpa-isolasi
Meskipun gambar memahami isolasi, jangan mengisolasi gambar.
--tidak-seh
Gambar tidak menggunakan SEH. Tidak ada penangan SE yang dapat dipanggil dari gambar ini.
--tidak mengikat
Jangan ikat gambar ini.
--wdmdriver
Pengemudi menggunakan Model Driver MS Windows.
--tsaware
Gambar adalah Terminal Server sadar.
--masukkan-stempel waktu
--tidak ada-masukkan stempel waktu
Masukkan stempel waktu nyata ke dalam gambar. Ini adalah perilaku default yang cocok
kode warisan dan itu berarti bahwa gambar akan berfungsi dengan alat berpemilik lainnya. NS
masalah dengan default ini adalah akan menghasilkan gambar yang sedikit berbeda
dihasilkan setiap kali sumber yang sama dihubungkan. Pilihan --tidak ada-masukkan stempel waktu bisa
digunakan untuk memasukkan nilai nol untuk stempel waktu, ini memastikan bahwa binari dihasilkan
dari sumber yang identik akan membandingkan secara identik.
Target uClinux C6X menggunakan format biner yang disebut DSBT untuk mendukung pustaka bersama. Setiap
perpustakaan bersama dalam sistem harus memiliki indeks unik; semua executable menggunakan indeks
0.
--ukuran dsbt ukuran
Opsi ini menetapkan jumlah entri dalam DSBT dari executable atau shared saat ini
perpustakaan untuk ukuran. Standarnya adalah membuat tabel dengan 64 entri.
--dsbt-indeks indeks
Opsi ini menetapkan indeks DSBT dari perpustakaan yang dapat dijalankan atau dibagikan saat ini ke indeks.
Standarnya adalah 0, yang sesuai untuk menghasilkan executable. Jika dibagikan
library dihasilkan dengan indeks DSBT 0, reloc "R_C6000_DSBT_INDEX" adalah
disalin ke dalam file keluaran.
--tidak ada-penggabungan-exidx-entri switch menonaktifkan penggabungan entri exidx yang berdekatan di
bingkai bersantai info.
Linker 68HC11 dan 68HC12 mendukung opsi khusus untuk mengontrol bank memori
pemetaan switching dan pembuatan kode trampolin.
--tanpa trampolin
Opsi ini menonaktifkan pembuatan trampolin. Secara default trampolin adalah
dihasilkan untuk setiap fungsi jauh yang dipanggil menggunakan instruksi "jsr" (ini
terjadi ketika pointer ke fungsi jauh diambil).
--jendela-bank nama
Opsi ini menunjukkan kepada penaut nama wilayah memori di MEMORY
spesifikasi yang menjelaskan jendela bank memori. Pengertian daerah tersebut adalah
kemudian digunakan oleh linker untuk menghitung paging dan alamat di dalam jendela memori.
Opsi berikut didukung untuk mengontrol penanganan pembuatan GOT saat menautkan untuk
68K target.
--dapat=mengetik
Opsi ini memberi tahu linker skema pembuatan GOT mana yang akan digunakan. mengetik harus menjadi satu
of tunggal, negatif, banyak or target. Untuk informasi lebih lanjut, lihat entri Info
untuk ld.
Opsi berikut didukung untuk mengontrol pembuatan instruksi microMIPS ketika:
menghubungkan untuk target MIPS.
--insn32
--tidak-insn32
Opsi ini mengontrol pilihan instruksi microMIPS yang digunakan dalam kode yang dihasilkan oleh
penghubung, seperti yang ada di PLT atau lazy binding stub, atau dalam relaksasi. Jika
--insn32 digunakan, maka linker hanya menggunakan pengkodean instruksi 32-bit. Secara default
atau jika --tidak-insn32 digunakan, semua pengkodean instruksi digunakan, termasuk yang 16-bit
jika memungkinkan.
LINGKUNGAN
Anda dapat mengubah perilaku ld dengan variabel lingkungan "GNUTARGET",
"LDEMULATION" dan "COLLECT_NO_DEMANGLE".
"GNUTARGET" menentukan format objek file input jika Anda tidak menggunakan -b (atau sinonimnya
--format). Nilainya harus menjadi salah satu nama BFD untuk format input. Jika tidak ada
"GNUTARGET" di lingkungan, ld menggunakan format alami dari target. Jika "GNUTARGET"
diatur ke "default" kemudian BFD mencoba menemukan format input dengan memeriksa biner
masukan file; metode ini sering berhasil, tetapi ada potensi ambiguitas, karena ada
tidak ada metode untuk memastikan bahwa angka ajaib yang digunakan untuk menentukan format file objek adalah
unik. Namun, prosedur konfigurasi untuk BFD pada setiap sistem menempatkan:
format konvensional untuk sistem itu terlebih dahulu dalam daftar pencarian, jadi ambiguitas teratasi
mendukung konvensi.
"LDEMULATION" menentukan emulasi default jika Anda tidak menggunakan -m pilihan. Itu
emulasi dapat memengaruhi berbagai aspek perilaku tautan, terutama tautan default
naskah. Anda dapat membuat daftar emulasi yang tersedia dengan --bertele-tele or -V pilihan. jika
-m opsi tidak digunakan, dan variabel lingkungan "LDEMULASI" tidak ditentukan,
emulasi default tergantung pada bagaimana linker dikonfigurasi.
Biasanya, linker akan default ke simbol demangling. Namun, jika
"COLLECT_NO_DEMANGLE" diatur di lingkungan, maka akan default untuk tidak demangling
simbol. Variabel lingkungan ini digunakan dengan cara yang sama oleh tautan "gcc"
program pembungkus. Default mungkin ditimpa oleh --demangle dan --tanpa-demangle
Pilihan.
Gunakan arm-linux-gnueabi-ld online menggunakan layanan onworks.net