Skip to main content

Semua Tentang Perintah Linux / Unix: ld

PERINTAH UBUNTU - ID USER, CRUD DIRECTORY - PART 1 (Jun 2026)

PERINTAH UBUNTU - ID USER, CRUD DIRECTORY - PART 1 (Jun 2026)
Anonim

NAME

ld - Menggunakan LD, penghubung GNU

SINOPSIS

ld pilihan objfile …

DESKRIPSI

ld menggabungkan beberapa objek dan fail arkib, memindahkan data mereka dan mengikat rujukan simbol. Biasanya langkah terakhir dalam menyusun program adalah untuk menjalankanld.

ld menerima fail Bahasa Penunjuk Pautan yang ditulis dalam bentuk sintaks Sintaks Bahasa Komando Penyunting AT & T, untuk memberikan kawalan eksplisit dan menyeluruh ke atas proses penyambungan.

Halaman lelaki ini tidak menerangkan bahasa arahan; lihatld kemasukan dalam "info", atau manual ld: penyemak imbas GNU, untuk butiran lengkap mengenai bahasa arahan dan aspek lain dari penaut GNU.

Versi inild menggunakan perpustakaan umum BFD tujuan untuk beroperasi pada fail objek. Ini membenarkanld untuk membaca, menggabungkan, dan menulis fail objek dalam pelbagai format --- contohnya, COFF atau "a.out". Format yang berbeza mungkin dikaitkan bersama untuk menghasilkan apa-apa jenis fail objek yang tersedia.

Selain dari kelenturannya, penandai GNU lebih membantu daripada penyambung lain dalam menyediakan maklumat diagnostik. Ramai penghubung mengabaikan pelaksanaan sebaik sahaja menghadapi ralat; bila mungkin,ld terus melaksanakan, membolehkan anda mengenal pasti ralat lain (atau, dalam beberapa kes, untuk mendapatkan fail output walaupun ralat).

Pengawal GNUld bertujuan untuk merangkumi pelbagai situasi, dan menjadi serasi mungkin dengan penyambung lain. Akibatnya, anda mempunyai banyak pilihan untuk mengawal kelakuannya.

PILIHAN

Penyambung menyokong banyak pilihan baris perintah, namun dalam praktik sebenar, beberapa dari mereka digunakan dalam konteks tertentu. Sebagai contoh, penggunaan yang kerapld adalah untuk menghubungkan fail objek Unix standard pada sistem Unix yang disokong. Pada sistem sedemikian, untuk memautkan fail "hello.o":

ld -o /lib/crt0.o hello.o -lc

Ini memberitahuld untuk menghasilkan fail yang dipanggil pengeluaran sebagai hasil menghubungkan fail "/lib/crt0.o" dengan "hello.o" dan perpustakaan "libc.a", yang akan datang dari direktori carian standard. (Lihat perbincangan mengenai-l pilihan di bawah.)

Beberapa pilihan baris perintah keld boleh ditentukan pada mana-mana titik dalam baris arahan. Walau bagaimanapun, pilihan yang merujuk kepada fail, seperti-l atau-T, menyebabkan fail dibaca pada titik di mana pilihan muncul dalam baris arahan, berbanding fail objek dan pilihan fail lain. Mengulangi pilihan bukan fail dengan hujah yang berbeza akan sama ada tiada kesan selanjutnya, atau mengatasi kejadian sebelumnya (yang lebih jauh ke kiri pada baris arahan) pilihan itu. Pilihan yang boleh dinyatakan secara bermakna lebih daripada sekali dinyatakan dalam uraian di bawah.

Argumen bukan pilihan adalah objek atau arkib objek yang akan dihubungkan bersama. Mereka boleh mengikuti, mendahului, atau bercampur dengan pilihan baris perintah, kecuali hujah fail objek tidak boleh diletakkan di antara pilihan dan hujahnya.

Biasanya penyalin dipanggil dengan sekurang-kurangnya satu fail objek, tetapi anda boleh menentukan bentuk lain dari fail input binari menggunakan-l, -R, dan bahasa arahan skrip. Jika tidak fail input binari pada semua ditentukan, penghubung tidak menghasilkan sebarang output, dan mengeluarkan mesejTiada fail input.

Jika penyambung tidak dapat mengenali format fail objek, ia akan menganggap bahawa ia adalah skrip penghubung. Skrip yang dinyatakan dengan cara ini menambahkan skrip penghubung utama yang digunakan untuk pautan (sama ada skrip penghubung lalai atau yang ditentukan dengan menggunakan-T). Ciri ini membenarkan penghubung untuk menghubungkan terhadap fail yang kelihatan sebagai objek atau arkib, tetapi sebenarnya hanya mentakrifkan beberapa nilai simbol, atau menggunakan "INPUT" atau "GROUP" untuk memuat objek lain. Ambil perhatian bahawa menentukan skrip dengan cara ini hanya menambah skrip penghubung utama; menggunakan-T pilihan untuk menggantikan skrip penghubung lalai sepenuhnya.

Untuk pilihan yang namanya adalah satu huruf, hujah-hujah pilihan mestilah mengikuti ikatan opsyen tanpa memotong ruang kosong, atau diberikan sebagai hujah-hujah yang berasingan dengan segera mengikuti pilihan yang memerlukannya.

Untuk pilihan yang namanya berbilang huruf, sama ada satu atau dua huruf boleh mendahului nama pilihan; sebagai contoh,-trace-symbol dan- simbol jejak bersamaan. Nota - terdapat satu pengecualian kepada peraturan ini. Pelbagai pilihan huruf yang bermula dengan huruf kecil 'o' hanya boleh diikuti oleh dua baris. Ini adalah untuk mengurangkan kekeliruan dengan-o pilihan. Jadi sebagai contoh-omagic menetapkan nama fail output kepadasihir sedangkan--omagik menetapkan bendera NMAGIC pada output.

Argumen kepada pelbagai pilihan huruf mestilah dipisahkan daripada nama pilihan dengan tanda yang sama, atau diberikan sebagai hujah yang berasingan dengan serta-merta mengikut pilihan yang memerlukannya. Sebagai contoh,- jejak simbol foo dan--trace-symbol = foo bersamaan. Singkatan unik nama pilihan berganda-huruf diterima.

Perhatikan - jika penghubung sedang dipanggil secara tidak langsung, melalui pemandu pengkompil (misgcc) maka semua pilihan baris arahan penghubung harus diawali oleh-Wl, (atau apa sahaja yang sesuai untuk pemandu pengkompil tertentu) seperti ini:

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

Ini penting, kerana jika tidak, program pengemudi compiler secara senyap-senyap akan menjatuhkan pilihan penghubung, sehingga menghasilkan pautan buruk.

Berikut ialah jadual suis baris perintah generik yang diterima oleh pengawal GNU:

-a kata kunci

Pilihan ini disokong untuk keserasian HP / UX. The kata kunci hujah mestilah salah satu daripada rentetanarkib, dikongsi, ataulalai. -aarchive bersamaan dengan fungsi-Batik, dan dua kata kunci lain bersamaan dengan fungsi-Bdynamic. Pilihan ini boleh digunakan beberapa kali.

-A seni bina

- arkitektur = seni bina

Dalam pelepasan semasald, pilihan ini berguna hanya untuk keluarga seni bina Intel 960. Dalam ituld konfigurasi, yang seni bina hujah mengenal pasti senibina tertentu dalam keluarga 960, yang membolehkan beberapa perlindungan dan mengubah laluan carian arkib-perpustakaan.

Siaran masa depanld boleh menyokong fungsi yang sama untuk keluarga seni bina yang lain.

-b format input

--format = format input

ld boleh dikonfigurasikan untuk menyokong lebih daripada satu jenis fail objek. Jika andald dikonfigurasi dengan cara ini, anda boleh menggunakannya-b pilihan untuk menentukan format binari untuk fail objek input yang mengikuti pilihan ini pada baris arahan. Walaupun ketika ituld dikonfigurasikan untuk menyokong format objek alternatif, anda biasanya tidak perlu menentukan ini, sebagaild harus dikonfigurasikan untuk dijangka sebagai format input lalai format paling biasa pada setiap mesin. format input adalah rentetan teks, nama format tertentu yang disokong oleh perpustakaan BFD. (Anda boleh menyenaraikan format binari yang ada denganobjdump -i.)

Anda mungkin mahu menggunakan pilihan ini jika anda menghubungkan fail dengan format perduaan yang luar biasa. Anda juga boleh menggunakannya-b untuk menukar format secara eksplisit (apabila menghubungkan fail objek dengan format yang berbeza), dengan memasukkan-b format input sebelum setiap kumpulan fail objek dalam format tertentu.

Format lalai diambil dari pembolehubah persekitaran "GNUTARGET".

Anda juga boleh menentukan format input daripada skrip, menggunakan arahan "TARGET";

-c MRI-commandfile

--mri-script = MRI-commandfile

Untuk keserasian dengan penghubung yang dihasilkan oleh MRI,ld menerima fail skrip yang ditulis dalam bahasa arahan alternatif yang terhad, yang diterangkan dalam seksyen Fail Skrip MRI yang sesuai dengan dokumentasi GNU. Memperkenalkan fail skrip MRI dengan pilihan-c; menggunakan-T pilihan untuk menjalankan skrip penghubung yang ditulis dalam tujuan umumld bahasa skrip. Jika MRI-cmdfile tidak wujud,ldcari ia dalam direktori yang ditentukan oleh mana-mana-L pilihan.

-d

-dc

-dp

Ketiga pilihan ini bersamaan; pelbagai bentuk disokong untuk keserasian dengan penyambung lain. Mereka memberi ruang kepada simbol umum walaupun fail output yang boleh dipindahkan dinyatakan (dengan-r). Perintah skrip "FORCE_COMMON_ALLOCATION" mempunyai kesan yang sama.

-e kemasukan

--entry = kemasukan

Gunakan kemasukan sebagai simbol yang jelas untuk memulakan pelaksanaan program anda, bukan titik kemasukan lalai. Sekiranya tiada simbol dinamakan kemasukan , penyambung akan cuba mengurai kemasukan sebagai nombor, dan menggunakannya sebagai alamat kemasukan (nombor itu akan ditafsirkan dalam asas 10; anda boleh menggunakan yang terkemuka0x untuk asas 16, atau yang terkemuka0 untuk asas 8).

-E

--export-dinamik

Apabila mencipta secara dinamik boleh laku, tambahkan semua simbol ke jadual simbol dinamik. Jadual simbol dinamik adalah set simbol yang dapat dilihat dari objek dinamik pada masa yang berjalan.

Jika anda tidak menggunakan pilihan ini, jadual simbol dinamik biasanya mengandungi hanya simbol-simbol yang dirujuk oleh beberapa objek dinamik yang disebut dalam pautan tersebut.

Jika anda menggunakan "dlopen" untuk memuat objek dinamik yang perlu merujuk kepada simbol-simbol yang ditakrifkan oleh program, bukannya beberapa objek dinamik lain, maka anda mungkin perlu menggunakan pilihan ini ketika menghubungkan program itu sendiri.

Anda juga boleh menggunakan skrip versi untuk mengawal apa simbol harus ditambahkan pada jadual simbol dinamik jika format output menyokongnya. Lihat perihalan- skrip kutipan di @ ref {VERSION}.

-EB

Tautan objek besar-endian. Ini mempengaruhi format output lalai.

-EL

Pautan objek kecil-endian. Ini mempengaruhi format output lalai.

-f

- Perisian nama

Apabila mencipta objek bersama ELF, tetapkan medan DT_AUXILIARY dalaman kepada nama yang ditentukan. Ini memberitahu penghubung dinamik bahawa jadual simbol objek bersama harus digunakan sebagai penolong tambahan pada jadual simbol objek bersama nama .

Jika anda kemudian menghubungkan program terhadap objek penapis ini, maka, apabila anda menjalankan program tersebut, penaut dinamis akan melihat bidang DT_AUXILIARY. Jika penyalin dinamik menyelesaikan sebarang simbol daripada objek penapis, ia akan terlebih dahulu menyemak sama ada terdapat definisi dalam objek yang dikongsi nama . Sekiranya terdapat satu, ia akan digunakan dan bukan definisi dalam objek penapis. Objek yang dikongsi nama tidak perlu wujud. Oleh itu, objek yang dikongsi nama boleh digunakan untuk menyediakan pelaksanaan alternatif fungsi tertentu, mungkin untuk penyahpepijatan atau untuk prestasi khusus mesin.

Pilihan ini boleh ditentukan lebih daripada sekali. Penyertaan DT_AUXILIARY akan dibuat mengikut urutan di mana ia muncul pada baris arahan.

-F nama

--filter nama

Apabila mencipta objek bersama ELF, tetapkan medan DT_FILTER dalaman kepada nama yang ditentukan. Ini memberitahu linker dinamik bahawa jadual simbol objek bersama yang sedang dibuat harus digunakan sebagai penapis pada jadual simbol objek bersama nama .

Jika anda kemudian menghubungkan program terhadap objek penapis ini, maka, apabila anda menjalankan program, penaut dinamis akan melihat bidang DT_FILTER. Penautan dinamis akan menyelesaikan simbol-simbol sesuai dengan jadual simbol objek penyaring seperti biasa, tetapi sebenarnya akan menghubungkan dengan definisi yang ditemukan dalam objek bersama nama . Oleh itu, objek penapis boleh digunakan untuk memilih subset simbol yang disediakan oleh objek nama .

Sesetengah pautan yang lama menggunakan-F pilihan sepanjang alat ukur kompilasi untuk menentukan format fail objek untuk kedua-dua input dan output fail objek. Pautan GNU menggunakan mekanisme lain untuk tujuan ini:-b, --format, --oformat pilihan, arahan "TARGET" dalam skrip penghubung, dan pembolehubah persekitaran "GNUTARGET". Pengawal GNU akan mengabaikannya-F pilihan ketika tidak membuat objek bersama ELF.

-fini nama

Apabila mencipta objek yang boleh dieksekusi atau dikongsi ELF, hubungi NAME apabila objek yang boleh dieksekusi atau dikongsi dipunggah, dengan menetapkan DT_FINI ke alamat fungsi. Secara lalai, penghubung menggunakan "_fini" sebagai fungsi untuk memanggil.

-g

Diabaikan. Disediakan untuk keserasian dengan alat lain.

-G nilai

--gpsize = nilai

Tetapkan saiz maksimum objek yang akan dioptimumkan menggunakan daftar GP ke saiz . Ini hanya bermakna untuk format fail objek seperti MIPS ECOFF yang menyokong meletakkan objek besar dan kecil ke dalam bahagian yang berlainan. Ini tidak diingini untuk format fail objek lain.

-h nama

-soname = nama

Apabila mencipta objek yang dikongsi ELF, tetapkan medan DT_SONAME dalaman kepada nama yang ditentukan. Apabila eksekusi dikaitkan dengan objek yang dikongsi yang mempunyai medan DT_SONAME, maka apabila executable dijalankan, linker dinamis akan mencoba memuatkan objek bersama yang ditentukan oleh medan DT_SONAME dan bukannya menggunakan nama file yang diberikan kepada linker tersebut.

-i

Lakukan pautan tambahan (sama seperti opsyen-r).

-di dalamnya nama

Apabila mencipta objek yang dapat dieksekusi atau dikongsi ELF, hubungi NAME apabila objek yang boleh dieksekusi atau dikongsi dimuatkan, dengan menetapkan DT_INIT ke alamat fungsi. Secara lalai, penaut menggunakan "_init" sebagai fungsi untuk memanggil.

-l arkib

--library = arkib

Tambah fail arkib arkib ke senarai fail yang hendak dihubungkan. Pilihan ini boleh digunakan beberapa kali.ld akan mencari senarai laluannya untuk kejadian "libarchive.a" untuk setiap arkib ditentukan.

Mengenai sistem yang menyokong perpustakaan berkongsi,ld juga boleh mencari perpustakaan dengan sambungan selain ".a". Secara khusus, mengenai sistem ELF dan SunOS,ld akan mencari direktori untuk perpustakaan dengan pelanjutan ".so" sebelum mencari seseorang dengan pelanjutan ".a". Dengan konvensyen, sambungan ".so" menunjukkan pustaka bersama.

Penautan akan mencari arkib hanya sekali, di lokasi di mana ia ditentukan pada baris arahan. Sekiranya arkib mentakrifkan simbol yang tidak ditentukan dalam sesetengah objek yang muncul sebelum arkib pada baris arahan, penaut akan menyertakan fail yang sesuai dari arkib. Walau bagaimanapun, simbol yang tidak ditakrifkan dalam objek yang muncul kemudian pada baris arahan tidak akan menyebabkan penghubung untuk mencari arkib lagi.

Lihat-( pilihan untuk cara memaksa penghubung untuk mencari arkib beberapa kali.

Anda boleh menyenaraikan arkib yang sama beberapa kali pada baris arahan.

Jenis carian arkib ini adalah standard untuk pengawal Unix. Walau bagaimanapun, jika anda menggunakannyald onAIX, perhatikan bahawa ia adalah berbeza daripada tingkah laku penyambung AIX.

-L searchdir

--library-path = searchdir

Tambah laluan searchdir ke senarai laluan ituld akan mencari perpustakaan arkib danld skrip kawalan. Anda boleh menggunakan pilihan ini beberapa kali. Direktori dicari dalam urutan di mana ia ditentukan pada baris arahan. Direktori yang dinyatakan pada baris arahan dicari sebelum direktori lalai. Semua-L pilihan dikenakan kepada semua-l pilihan, tanpa mengira susunan pilihan.

Jika searchdir bermula dengan "=", maka "=" akan digantikan oleh awalan sysroot , jalan yang dinyatakan apabila penyambung dikonfigurasikan.

Set lalai laluan dicari (tanpa ditentukan dengan-L) bergantung kepada mod emulasi yang manald sedang menggunakan, dan dalam beberapa kes juga bagaimana ia dikonfigurasikan.

Laluan juga boleh ditentukan dalam skrip pautan dengan arahan "SEARCH_DIR". Direktori yang dinyatakan dengan cara ini dicari pada titik di mana skrip penghubung muncul di baris arahan.

-m emulasi

Emulate the emulasi penyambung. Anda boleh menyenaraikan emulasi yang tersedia dengan- kata atau-Vpilihan.

Sekiranya-m pilihan tidak digunakan, emulasi diambil dari pembolehubah persekitaran "LDEMULATION", jika itu ditakrifkan.

Jika tidak, emulasi lalai bergantung kepada bagaimana penyalin itu dikonfigurasikan.

-M

--print-map

Cetak peta pautan ke output standard. Peta pautan menyediakan maklumat mengenai pautan, termasuk yang berikut:

*

Di mana fail dan simbol objek dipetakan ke dalam memori.

*

Bagaimana simbol biasa diperuntukkan.

*

Semua ahli arkib termasuk dalam pautan itu, dengan menyebut simbol yang menyebabkan ahli arkib dibawa masuk.

-n

--nagih

Matikan penjajaran halaman seksyen, dan tandakan output sebagai "NMAGIC" jika boleh.

-N

--omagik

Tetapkan teks dan bahagian data supaya dapat dibaca dan ditulis. Juga, jangan jajarkan segmen data segmen, dan lumpuhkan pautan terhadap perpustakaan yang dikongsi. Jika format output menyokong nombor sihir gaya Unix, tandakan output sebagai "OMAGIC".

- tidak menghairankan

Opsyen ini menafikan kebanyakan kesan daripada-N pilihan. Ia menetapkan bahagian teks untuk dibaca sahaja, dan memaksa segmen data menjadi selaras halaman. Nota - opsyen ini tidak membolehkan menghubungkan terhadap perpustakaan yang dikongsi. Gunakan-Bdynamic untuk ini.

-o pengeluaran

--output = pengeluaran

Gunakan pengeluaran sebagai nama untuk program yang dihasilkan olehld; jika pilihan ini tidak dinyatakan, nama itu a.out digunakan secara lalai. Perintah skrip "OUTPUT" juga boleh menentukan nama fail output.

-O tahap

Jika tahap adalah nilai angka lebih besar daripada sifarld mengoptimumkan output. Ini mungkin mengambil masa yang lama dan oleh itu mungkin hanya perlu didayakan untuk binari akhir.

-q

--emit-relocs

Tinggalkan bahagian dan isi kandungan penempatan dalam pelaksana yang berkaitan sepenuhnya. Analisis pautan pos dan alat pengoptimuman mungkin memerlukan maklumat ini untuk melakukan pengubahsuaian yang betul bagi laku laku. Ini akan dapat dieksekusi lebih besar.

Pilihan ini pada masa ini hanya disokong pada platform ELF.

-r

- tidak dapat dikalahkan

Menjana output boleh relocate --- i.e., Menghasilkan fail output yang pada gilirannya dapat berfungsi sebagai input kepadald. Ini sering dipanggil penyambungan separa . Sebagai kesan sampingan, dalam persekitaran yang menyokong nombor sihir Unix standard, pilihan ini juga menetapkan nombor sihir fail output kepada "OMAGIC". Jika pilihan ini tidak ditentukan, fail mutlak dihasilkan. Apabila menghubungkan program C ++, pilihan ini tidak akan menyelesaikan rujukan kepada pembina; untuk melakukan itu, gunakan-Ur.

Apabila fail input tidak mempunyai format yang sama dengan fail output, penyambungan separa hanya disokong jika fail input itu tidak mengandungi sebarang relokasi. Format keluaran yang berbeza boleh mempunyai sekatan lebih lanjut; contohnya format berasaskan "a.out" tidak menyokong pautan sebahagian dengan fail input dalam format lain sama sekali.

Opsyen ini melakukan perkara yang sama seperti-i.

-R nama fail

--just-symbols = nama fail

Baca nama simbol dan alamat mereka dari nama fail , tetapi jangan memindahkan atau memasukkannya ke dalam output. Ini membolehkan fail output anda merujuk simbol ke lokasi memori mutlak yang ditakrifkan dalam program lain. Anda boleh menggunakan pilihan ini lebih daripada sekali.

Untuk keserasian dengan penghubung ELF yang lain, jika-R pilihan diikuti oleh nama direktori, bukan nama fail, ia dianggap sebagai-rpath pilihan.

-s

--strip-semua

Omit semua maklumat simbol dari fail output.

-S

--strip-debug

Omit maklumat simbol debugger (tetapi tidak semua simbol) dari fail output.

-t

- jejak

Cetak nama fail input sebagaild memprosesnya.

-T fail skrip

--skrip = fail skrip

Gunakan fail skrip sebagai skrip penghubung. Skrip ini menggantikannyaldskrip penghubung lalai (bukan menambahnya), jadi commandfile mesti menyatakan segala yang diperlukan untuk menggambarkan fail output. Jika fail skrip tidak wujud dalam direktori semasa, "ld" mencarinya dalam direktori yang dinyatakan oleh mana-mana sebelum ini-L pilihan. Pelbagai-T pilihan berkumpul.

-u simbol

--disiplin = simbol

Angkatan simbol untuk dimasukkan ke dalam fail output sebagai simbol yang tidak ditentukan. Melakukan ini boleh, sebagai contoh, mencetuskan menghubungkan modul tambahan dari perpustakaan standard.-u boleh diulang dengan hujah opsyen yang berbeza untuk memasukkan simbol yang tidak jelas. Pilihan ini bersamaan dengan arahan skrip penghubung "EXTERN".

-Ur

Untuk apa-apa selain daripada program C ++, pilihan ini bersamaan dengan-r: ia menghasilkan output boleh ditarik balik --- i.e., fail output yang boleh berfungsi sebagai input kepadald. Apabila menghubungkan program C ++,-Ur tidak menyelesaikan rujukan kepada pembina, tidak seperti-r. Ia tidak berfungsi untuk digunakan-Ur pada fail yang dihubungkan dengannya-Ur; sebaik sahaja jadual pembina telah dibina, ia tidak boleh ditambah. Gunakan-Ur hanya untuk pautan separa terakhir, dan-r untuk yang lain.

--unique = SEKSYEN

Mencipta seksyen output berasingan untuk setiap padanan bahagian input SEKSYEN , atau jika wildcard pilihan SEKSYEN hujah hilang, untuk setiap bahagian input yatim piatu. Seksyen yatim adalah salah satu yang tidak disebutkan secara khusus dalam skrip penghubung. Anda boleh menggunakan pilihan ini beberapa kali pada baris arahan; Ia menghalang penggabungan normal bahagian masukan dengan nama yang sama, mengetepikan tugasan bahagian output dalam skrip penghubung.

-v

- pengalihan

-V

Paparkan nombor versi untukld. The-V opsyen juga menyenaraikan emulasi yang disokong.

-x

--discard-all

Padamkan semua simbol tempatan.

-X

- penduduk setempat

Padam semua simbol tempatan sementara. Untuk kebanyakan sasaran, ini adalah semua simbol tempatan yang namanya bermulaL.

-y simbol

--trace-symbol = simbol

Cetak nama setiap fail yang dipautkan di mana simbol muncul. Pilihan ini boleh diberikan berapa kali. Pada banyak sistem adalah perlu untuk menyediakan garis bawah.

Pilihan ini berguna apabila anda mempunyai simbol yang tidak ditentukan dalam pautan anda tetapi tidak tahu di mana rujukannya datang.

-Y jalan

Tambah jalan ke laluan carian pustaka default. Opsyen ini wujud untuk keserasian Solaris.

-z kata kunci

Kata kunci yang diakui adalah "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "origin", "combreloc", "nocombreloc" and "nocopyreloc ". Kata kunci lain diabaikan untuk keserasian Solaris. "initfirst" menandakan objek yang akan dimulakan pertama pada runtime sebelum sebarang objek lain."interpose" menandakan objek yang jadual simbolnya dipisahkan sebelum semua simbol tetapi yang boleh dieksekusi. "loadfltr" menandakan objek yang filestinya diproses dengan segera pada masa runtuh. "nodefaultlib" menandakan objek bahawa pencarian untuk dependencies objek ini akan mengabaikan mana-mana laluan carian perpustakaan lalai. "nodelete" menandakan objek tidak boleh dimunggah semasa runtime. "nodlopen" menandakan objek tidak tersedia untuk "dlopen". "nodump" menandakan objek tidak boleh dibuang oleh "dldump". "sekarang" menandakan objek dengan runtime runtime yang tidak malas. "asal" menandakan objek mungkin mengandungi $ ORIGIN. "defs" melarang simbol yang tidak ditentukan. "muldefs" membolehkan pelbagai definisi. "combreloc" menggabungkan beberapa bahagian relok dan menyusunnya untuk menjadikan cache simbol carian dinamik mungkin.

"nocombreloc" melumpuhkan beberapa bahagian relokasi yang bergabung. "nocopyreloc" melumpuhkan pengeluaran relocs salinan.

-( arkib -)

- kumpulan awal arkib --end-group

The arkib sepatutnya senarai fail arkib. Mereka mungkin sama ada nama fail eksplisit, atau-lpilihan.

Arkib yang ditentukan dicari berulang kali sehingga tiada rujukan yang belum ditentukan baru dibuat. Biasanya, arkib hanya dicari sekali dalam susunan yang ditentukan pada baris arahan. Sekiranya simbol dalam arkib itu diperlukan untuk menyelesaikan simbol yang tidak ditakrifkan dirujuk oleh objek dalam arkib yang muncul kemudian pada baris arahan, penyambung tidak dapat menyelesaikan rujukan tersebut. Dengan mengelompokkan arkib, semuanya akan dicari berulang kali sehingga semua kemungkinan rujukan dapat diselesaikan.

Menggunakan pilihan ini mempunyai kos prestasi yang ketara. Lebih baik menggunakannya hanya apabila terdapat rujukan pekeliling yang tidak dapat dielakkan di antara dua atau lebih arsip.

- penerimaan-tidak diketahui-masuk-gerbang

- tidak menerima-tidak-input-gerbang

Memberitahu penghubung untuk menerima fail masukan yang senibina tidak dapat diiktiraf. Anggapannya ialah pengguna mengetahui apa yang mereka lakukan dan sengaja mahu menghubungkan dalam fail input yang tidak diketahui ini. Ini adalah tingkah laku lalai penyambung, sebelum pelepasan 2.14. Tingkah laku lalai dari pelepasan 2.14 dan seterusnya adalah untuk menolak fail input tersebut, dan sebagainya- penerimaan-tidak diketahui-masuk-gerbang pilihan telah ditambah untuk memulihkan tingkah laku lama.

-pengertian kata kunci

Pilihan ini diabaikan untuk keserasian SunOS.

-Bdynamic

-dy

-call_shared

Pautkan terhadap perpustakaan dinamik. Ini hanya bermakna pada platform yang mana perpustakaan berkongsi disokong. Pilihan ini biasanya adalah lalai pada platform sedemikian. Varian berbeza pilihan ini adalah untuk keserasian dengan pelbagai sistem. Anda boleh menggunakan pilihan ini beberapa kali di baris arahan: ia memberi kesan kepada carian perpustakaan-l pilihan yang mengikutinya.

-Bahagian

Tetapkan bendera "DF_1_GROUP" dalam entri "DT_FLAGS_1" dalam bahagian dinamik. Ini menyebabkan penghubung runtime untuk mengendalikan carian dalam objek ini dan dependensinya hanya dilakukan di dalam kumpulan.- tidak jelas tersirat. Pilihan ini hanya bermakna pada platform ELF yang menyokong perpustakaan berkongsi.

-Batik

-dn

-non_shared

-statik

Jangan hubungkan dengan perpustakaan berkongsi. Ini hanya bermakna pada platform yang mana perpustakaan berkongsi disokong. Varian berbeza pilihan ini adalah untuk keserasian dengan pelbagai sistem. Anda boleh menggunakan pilihan ini beberapa kali di baris arahan: ia memberi kesan kepada carian perpustakaan-l pilihan yang mengikutinya.

-Bakterik

Apabila membuat perpustakaan yang dikongsi, ikut rujukan kepada simbol global kepada definisi dalam perpustakaan kongsi, jika ada. Biasanya, ada kemungkinan program berkaitan dengan perpustakaan yang dikongsi untuk mengatasi definisi dalam perpustakaan kongsi. Pilihan ini hanya bermakna pada ELFplatforms yang menyokong perpustakaan berkongsi.

- bahagian centang

- tidak menyemak bahagian

Minta penaut tidak untuk menyemak alamat seksyen setelah mereka ditugaskan untuk melihat apakah terdapat overlaps. Biasanya penghubung akan melakukan pemeriksaan ini, dan jika ia mendapati apa-apa tumpang tindih ia akan menghasilkan mesej ralat yang sesuai. Penghubung itu tahu tentang, dan membuat peruntukan bagi seksyen dalam overlays. Tingkah laku lalai boleh dipulihkan dengan menggunakan suis baris perintah- bahagian centang.

--cref

Output jadual rujukan salib. Jika fail peta pautan dihasil, jadual rujukan salib dicetak ke fail peta. Jika tidak, ia dicetak pada output piawai.

Format jadual adalah sengaja mudah, supaya ia dapat diproses dengan mudah oleh skrip jika perlu. Simbol-simbol dicetak, disusun mengikut nama. Untuk setiap simbol, senarai nama fail diberikan. Sekiranya simbol ditakrifkan, fail pertama yang disenaraikan ialah lokasi definisi. Fail yang tinggal mengandungi rujukan kepada simbol.

- tidak menentukan-biasa

Opsyen ini menghalang tugasan alamat untuk simbol umum. Arahan skrip "INHIBIT_COMMON_ALLOCATION" mempunyai kesan yang sama.

The- tidak menentukan-biasa opsyen membenarkan decoupling keputusan untuk memberikan alamat kepada simbol umum dari pilihan jenis fail output; jika tidak, jenis keluaran bukan Relocatable menugaskan alamat ke simbol umum. Menggunakan- tidak menentukan-biasa membolehkan simbol umum yang dirujuk daripada pustaka bersama untuk diberikan alamat hanya dalam program utama. Ini menghapuskan ruang pendua yang tidak digunakan dalam pustaka bersama, dan juga menghalang sebarang kekeliruan yang mungkin untuk menyelesaikan dengan duplikasi yang salah apabila terdapat banyak modul dinamik dengan laluan carian khusus untuk resolusi simbol runtime.

--defsym simbol = ungkapan

Buat simbol global dalam fail output, mengandungi alamat mutlak yang diberikan oleh ungkapan . Anda boleh menggunakan pilihan ini sebanyak yang diperlukan untuk menentukan beberapa simbol dalam baris arahan. Bentuk aritmetik terhad disokong untuk ungkapan dalam konteks ini: anda boleh memberikan pemalar heksadesimal atau nama simbol yang sedia ada, atau gunakan "+" dan "-" untuk menambah atau menolak pemalar atau simbol heksadesimal. Sekiranya anda memerlukan ungkapan yang lebih rumit, pertimbangkan untuk menggunakan bahasa arahan pautan dari skrip. Catatan: tidak perlu ada ruang putih antara simbol , tanda sama (``=''), dan ungkapan .

--menggelamkan = gaya

- tidak ada demam

Pilihan ini mengawal sama ada untuk menyudutkan nama simbol dalam mesej ralat dan output lain. Apabila penyalin diberitahu untuk menyekat, ia cuba untuk membentangkan nama simbol dalam cara yang boleh dibaca: ia membariskan garis bawah yang utama jika ia digunakan oleh format fail objek, dan menukarkan nama-nama simbol C ++ yang dicerna ke dalam nama yang boleh dibaca pengguna. Pengkompil yang berbeza mempunyai gaya mangling yang berbeza. Argumen gaya demangling pilihan boleh digunakan untuk memilih gaya demangling yang sesuai untuk pengkompil anda. Penaut akan menyekat secara lalai melainkan pemboleh ubah persekitaranCOLLECT_NO_DEMANGLE ditetapkan. Pilihan ini boleh digunakan untuk mengatasi lalai.

- penyambung-penyokong fail

Tetapkan nama penyalin dinamik. Ini hanya bermakna apabila menjana kadangkala ELF boleh dieksekusi secara dinamik. Linker dinamik lalai biasanya betul; jangan gunakan ini kecuali anda tahu apa yang anda lakukan.

- rebat-relocs

Pilihan ini hanya bermakna ketika menghubungkan kod PIC tertanam MIPS, yang dihasilkan oleh pilihan -membubuh-pic ke pengkomputer GNU dan assembler. Ia menyebabkan penghubung untuk membuat jadual yang boleh digunakan pada masa runtime untuk memindahkan mana-mana data yang dimulakan secara statik kepada nilai penunjuk. Lihat kod dalam testuite / ld-empic untuk butiran.

- peringatan-peringatan

Rawat semua amaran sebagai kesilapan.

--force-exe-suffix

Pastikan fail output mempunyai akhiran .exe.

Sekiranya fail output yang dihubungkan dengan berjaya tidak mempunyai akhiran ".exe" atau ".dll", pilihan ini memaksa penyalin untuk menyalin fail output kepada salah satu daripada nama yang sama dengan akhiran ".exe". Pilihan ini berguna apabila menggunakan makefiles Unix yang tidak diubahsuai pada host Microsoft Windows, kerana beberapa versi Windows tidak akan menjalankan imej kecuali ia berakhir dengan akhiran ".exe".

- tidak-gc-bahagian

--gc-sections

Dayakan koleksi sampah bahagian input yang tidak digunakan. Ia diabaikan pada sasaran yang tidak menyokong pilihan ini. Pilihan ini tidak sesuai dengannya-r, ataupun ia harus digunakan dengan menghubungkan dinamik. Tingkah laku lalai (tidak melakukan pengumpulan sampah ini) boleh dipulihkan dengan menyatakan- tidak-gc-bahagian pada baris arahan.

- membantu

Cetak ringkasan pilihan baris arahan pada output standard dan keluar.

--target-help

Cetak ringkasan semua pilihan khusus sasaran pada output standard dan keluar.

-Map mapfile

Cetak peta pautan ke fail mapfile . Lihat perihalan-M pilihan, di atas.

- jangan simpan-ingatan

ld biasanya mengoptimumkan untuk mempercepat penggunaan memori dengan mencatat jadual simbol fail input dalam memori. Pilihan ini memberitahuld untuk sebaliknya mengoptimumkan penggunaan memori, dengan membaca semula jadual simbol seperti yang diperlukan. Ini mungkin diperlukan jikald kehabisan ruang memori semasa menghubungkan laku yang boleh dilaksanakan.

- tidak jelas

-z defs

Biasanya apabila membuat perpustakaan berkongsi tidak simbolik, simbol yang tidak ditentukan dibenarkan dan dibiarkan diselesaikan oleh pemuat runtime. Pilihan ini tidak membenarkan simbol-simbol yang tidak jelas.

- pelbagai definisi pelbagai

-z muldefs

Biasanya apabila simbol ditakrifkan beberapa kali, penaut akan melaporkan ralat yang membawa maut. Opsyen ini membolehkan pelbagai definisi dan definisi pertama akan digunakan.

--allow-shlib-undefined

Benarkan simbol-simbol yang tidak ditakrifkan dalam objek yang dikongsi walaupun tidak ada undefined. Hasil bersih akan menjadi simbol yang tidak ditentukan dalam objek tetap masih akan mencetuskan ralat, tetapi simbol yang tidak ditentukan dalam objek yang dikongsi akan diabaikan. Pelaksanaan no_undefined membuat andaian bahawa linker runtime akan tersedak pada simbol yang tidak ditentukan. Walau bagaimanapun terdapat sekurang-kurangnya satu sistem (BeOS) di mana simbol-simbol yang tidak ditakrifkan dalam perpustakaan berkongsi adalah normal kerana kernel menumpuk mereka pada masa beban untuk memilih fungsi mana yang paling sesuai untuk seni bina semasa. I.E. secara dinamik memilih fungsi memset yang sesuai. Rupa-rupanya ia juga biasa bagi perpustakaan berkongsi HPPA untuk mempunyai simbol yang tidak jelas.

- tidak ada undefined-version

Biasanya apabila simbol mempunyai versi yang tidak jelas, penyambung akan mengabaikannya. Opsyen ini melarang simbol dengan versi yang tidak ditentukan dan ralat yang akan membawa maut dikeluarkan.

- tidak memberi peringatan

Biasanyald akan memberikan ralat jika anda cuba menghubungkan bersama-sama fail input yang tidak sesuai untuk beberapa sebab, mungkin kerana mereka telah dikumpulkan untuk pemproses yang berbeza atau untuk endiannesses yang berbeza. Pilihan ini memberitahuld bahawa ia sepatutnya membenarkan kesilapan sedemikian. Pilihan ini hanya boleh digunakan dengan berhati-hati, dalam kes-kes apabila anda telah mengambil beberapa tindakan khas yang memastikan bahawa kesalahan penyambung tidak sesuai.

- tidak ada-arkib

Matikan kesan daripada--whole-archive pilihan untuk fail arkib seterusnya.

- tindakan mengharamkan

Kekalkan fail output boleh laku apabila ia masih boleh digunakan.Biasanya, penghubung tidak akan menghasilkan fail output jika ia menemui ralat semasa proses pautan; ia keluar tanpa menulis fail output apabila ia mengeluarkan apa-apa ralat.

-nostdlib

Hanya direktori perpustakaan carian yang dinyatakan secara jelas pada baris arahan. Direktori perpustakaan yang ditentukan dalam skrip penghubung (termasuk skrip penghubung yang dinyatakan pada baris arahan) tidak diendahkan.

--oformat format output

ld boleh dikonfigurasikan untuk menyokong lebih daripada satu jenis fail objek. Jika andald dikonfigurasi dengan cara ini, anda boleh menggunakannya--oformat pilihan untuk menentukan format binari untuk fail objek output. Walaupun ketika ituld dikonfigurasikan untuk menyokong format objek alternatif, anda biasanya tidak perlu menentukan ini, sebagaild harus dikonfigurasikan untuk menghasilkan sebagai format output lalai format yang paling biasa pada setiap mesin. format output adalah rentetan teks, nama format tertentu yang disokong oleh perpustakaan BFD. (Anda boleh menyenaraikan format binari yang ada denganobjdump -i.) Perintah skrip "OUTPUT_FORMAT" juga boleh menentukan format keluaran, tetapi opsyen ini mengesahkannya.

-qmagic

Pilihan ini diabaikan untuk keserasian Linux.

-Saya

Pilihan ini diabaikan untuk keserasian SVR4.

--relax

Pilihan dengan kesan bergantung mesin. Pilihan ini hanya disokong pada beberapa sasaran.

Pada beberapa platform, yang--relax pilihan melakukan pengoptimalan global yang mungkin terjadi ketika linker menyelesaikan alamat dalam program, seperti mod alamat santai dan mensintesis arahan baru dalam file objek output.

Pada sesetengah platform, masa pautan ini pengoptimuman global boleh membuat penyahkodan simbolik yang mungkin tidak dapat dilaksanakan. Ini diketahui sebagai kes bagi pemroses Matsushita MN10200 dan MN10300.

Pada platform yang tidak disokong,--relax diterima, tetapi diabaikan.

- fail-simbol -retain-fail nama fail

Kekalkan sahaja simbol-simbol yang disenaraikan dalam fail nama fail , membuang semua yang lain. nama fail hanyalah fail yang rata, dengan satu nama simbol per baris. Pilihan ini amat berguna dalam persekitaran (seperti VxWorks) di mana jadual simbol global besar terkumpul secara beransur-ansur, untuk memelihara memori jangka masa.

- fail-simbol -retain-fail tidak tidak membuang simbol yang tidak ditentukan, atau simbol yang diperlukan untuk penempatan semula.

Anda hanya boleh menentukan- fail-simbol -retain-fail sekali dalam baris arahan. Ia menimpa-s dan-S.

-rpath dir

Tambah direktori ke laluan carian perpustakaan runtime. Ini digunakan apabila menghubungkan ELFexecutable dengan objek yang dikongsi. Semua-rpath hujah digabungkan dan diserahkan kepada penghubung runtime, yang menggunakannya untuk mencari objek yang dikongsi semasa runtime. The-rpath Opsyen juga digunakan apabila mencari objek yang dikongsi yang diperlukan oleh objek yang dikongsi secara jelas termasuk dalam pautan; lihat perihalan-rpath-link pilihan. Jika-rpath tidak digunakan ketika menghubungkan ELF yang boleh dieksekusi, kandungan pembolehubah persekitaran "LD_RUN_PATH" akan digunakan jika ditakrifkan.

The-rpath pilihan juga boleh digunakan pada SunOS. Secara lalai, pada SunOS, penghubung akan membentuk patch carian runtime daripada semua-L pilihan ia diberikan. Sekiranya-rpath pilihan digunakan, laluan carian runtime akan dibentuk secara eksklusif menggunakan-rpath pilihan, mengabaikannya-Lpilihan. Ini berguna apabila menggunakan gcc, yang menambah banyak-L pilihan yang mungkin berada pada sistem fail mountNFS.

Untuk keserasian dengan penghubung ELF yang lain, jika-R pilihan diikuti oleh nama direktori, bukan nama fail, ia dianggap sebagai-rpath pilihan.

-rpath-link DIR

Apabila menggunakan ELF atau SunOS, satu perpustakaan yang dikongsi mungkin memerlukan yang lain. Ini berlaku apabila pautan "ld-shared" merangkumi pustaka bersama sebagai salah satu fail input.

Apabila penghubung bertemu seperti ketergantungan apabila melakukan pautan yang tidak dikongsi, tidak boleh dipindahkan, ia akan secara automatik cuba mencari perpustakaan yang dikehendaki yang dikehendaki dan memasukkannya ke dalam pautan, jika ia tidak disertakan dengan jelas. Dalam kes seperti ini,-rpath-link pilihan menentukan set pertama direktori untuk mencari. The-rpath-link opsyen boleh menentukan urutan nama direktori sama ada dengan menentukan senarai nama yang dipisahkan oleh titik, atau dengan beberapa kali muncul.

Pilihan ini harus digunakan dengan berhati-hati kerana ia mengatasi laluan carian yang mungkin sukar dikompilasi ke perpustakaan bersama. Dalam hal sedemikian, kemungkinan untuk menggunakan laluan carian yang tidak sengaja daripada yang menghubungkan penghubung runtime akan dilakukan.

Pengantara menggunakan laluan carian berikut untuk mencari perpustakaan kongsi yang dikehendaki.

1.

Sebarang direktori yang ditentukan oleh-rpath-link pilihan.

2.

Sebarang direktori yang ditentukan oleh-rpath pilihan. Perbezaan antara-rpath dan-rpath-link ialah direktori yang ditentukan oleh-rpath pilihan dimasukkan dalam laku dan digunakan semasa runtime, sedangkan-rpath-link pilihan hanya berkesan pada masa pautan. Ia hanya untuk penutur asli sahaja.

3.

Pada sistem ELF, jika-rpath dan pilihan "rpath-link" tidak digunakan, cari kandungan pembolehubah persekitaran "LD_RUN_PATH". Ia hanya untuk penutur asli sahaja.

4.

Pada SunOS, jika-rpath pilihan tidak digunakan, cari apa-apa direktori yang ditentukan menggunakan-L pilihan.

5.

Untuk penaut asal, kandungan pembolehubah persekitaran "LD_LIBRARY_PATH".

6.

Bagi penaung ELF asli, direktori dalam "DT_RUNPATH" atau "DT_RPATH" perpustakaan kongsi digunakan mencari perpustakaan kongsi yang diperlukan olehnya.Penyertaan "DT_RPATH" diabaikan jika penyertaan "DT_RUNPATH" wujud.

7.

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

8.

Untuk penaut asli pada sistem ELF, jika fail tersebut /etc/ld.so.conf wujud, senarai direktori yang terdapat dalam fail itu.

Jika perpustakaan yang dikehendaki yang dikehendaki tidak ditemui, penghubung akan mengeluarkan amaran dan teruskan dengan pautan tersebut.

-shared

-Bebar

Buat perpustakaan kongsi. Ini pada masa ini hanya disokong pada platform ELF, XCOFF dan SunOS. Pada SunOS, penghubung itu akan secara automatik membuat pustaka dikongsi jika-e pilihan tidak digunakan dan terdapat simbol yang tidak ditentukan dalam pautan.

--sort-common

Pilihan ini memberitahuld untuk menyusun simbol biasa mengikut saiz apabila ia meletakkannya di bahagian output yang sesuai. Mula-mula datang semua simbol satu byte, kemudian semua dua byte, kemudian semua empat byte, dan kemudian segala-galanya. Ini adalah untuk mengelakkan jurang antara simbol kerana kekangan penjajaran.

--sendit-fail saiz

Sama seperti- pemulihan mengikut relokasi tetapi mencipta bahagian keluaran baru untuk setiap fail input apabila saiz dicapai. saiz mungkir kepada ukuran 1 jika tidak diberikan.

--split-by-reloc kiraan

Cuba mencipta bahagian tambahan dalam fail output supaya tiada bahagian output tunggal dalam fail mengandungi lebih daripada kiraan penempatan semula. Ini berguna apabila menghasilkan fail yang boleh dimuat turun untuk memuat turun ke dalam kernel masa sebenar dengan format fail objek COFF; sejak COFFcannot mewakili lebih daripada 65535 penempatan semula dalam seksyen tunggal. Ambil perhatian bahawa ini akan gagal berfungsi dengan format fail objek yang tidak menyokong bahagian sewenang-wenangnya. Pengantara tidak akan memisahkan bahagian input individu untuk pengagihan semula, jadi jika seksyen input tunggal mengandungi lebih daripada kiraan penempatan semula satu bahagian pengeluaran akan mengandungi banyak relokasi. kiraan mungkir kepada nilai 32768.

--stats

Kiraan dan paparkan statistik mengenai operasi penghubung, seperti masa pelaksanaan dan penggunaan memori.

- format berstruktur

Untuk beberapa sasaran, outputld adalah berbeza dalam beberapa cara dari output beberapa penyambung yang sedia ada. Permintaan suis inild untuk menggunakan format tradisional sebaliknya.

Sebagai contoh, pada SunOS,ld menggabungkan penyalin pendua dalam jadual rentetan simbol. Ini dapat mengurangkan saiz fail output dengan maklumat debugging penuh sebanyak 30 peratus. Malangnya, program SunOS "dbx" tidak dapat membaca program yang dihasilkan ("gdb" tidak mempunyai masalah). The- format berstruktur suis memberitahuld untuk tidak menggabungkan penyertaan pendua.

- mula-mula bahagian seksyen = org

Cari seksyen dalam fail output pada alamat mutlak yang diberikan oleh org . Anda boleh menggunakan pilihan ini sebanyak yang diperlukan untuk mencari beberapa bahagian dalam baris arahan. org mestilah integer hexadecimal tunggal; untuk keserasian dengan penghubung lain, anda boleh meninggalkan pemimpin0x biasanya dikaitkan dengan nilai heksadesimal. Catatan: tidak perlu ada ruang putih antara bahagian seksyen , tanda sama (``=''), dan org .

-Tbs org

-Tdata org

-Tekseks org

Gunakan org sebagai alamat permulaan --- masing-masing - "bss", "data", atau "teks" segmen fail output. org mestilah integer hexadecimal tunggal; untuk keserasian dengan penghubung lain, anda boleh meninggalkan pemimpin0x biasanya dikaitkan dengan nilai heksadesimal.

--dll-verbose

- kata

Paparkan nombor versi untukld dan senaraikan emulasi pautan yang disokong. Paparkan fail input yang boleh dan tidak boleh dibuka. Paparkan skrip penghubung yang digunakan oleh penghubung.

--version-script = fail skrip versi

Tentukan nama skrip versi kepada penghubung. Ini biasanya digunakan apabila mencipta perpustakaan berkongsi untuk menentukan maklumat tambahan mengenai heirarki versi untuk perpustakaan yang diwujudkan. Pilihan ini hanya bermakna pada platform ELF yang menyokong perpustakaan berkongsi.

--warn-common

Amaran apabila simbol umum digabungkan dengan simbol biasa atau dengan definisi simbol. Pautan Unix membenarkan amalan ini agak ceroboh, tetapi pautan pada beberapa sistem operasi lain tidak. Pilihan ini membolehkan anda mencari masalah yang berpotensi daripada menggabungkan simbol global. Malangnya, sesetengah perpustakaan C menggunakan amalan ini, jadi anda mungkin mendapat beberapa amaran mengenai simbol-simbol di dalam perpustakaan serta dalam program anda.

Terdapat tiga jenis simbol global, digambarkan di sini oleh contoh C:

int i = 1;

Definisi, yang masuk dalam seksyen data yang diisytiharkan pada fail output.

extern int i;

Rujukan tidak jelas, yang tidak memperuntukkan ruang. Harus ada definisi atau lambang umum bagi pembolehubah di suatu tempat.

int i;

Simbol yang biasa. Sekiranya terdapat hanya simbol biasa (satu atau lebih) untuk pemboleh ubah, ia akan masuk ke dalam kawasan data yang tidak dinamakan fail output. Penyambung menggabungkan beberapa simbol umum untuk pembolehubah yang sama ke dalam simbol tunggal. Jika mereka mempunyai saiz yang berbeza, ia memilih saiz terbesar. Penghubung itu menjadikan simbol biasa menjadi perisytiharan, jika terdapat definisi pembolehubah yang sama.

The--warn-common Pilihan boleh menghasilkan lima jenis amaran. Setiap amaran terdiri daripada sepasang garis: yang pertama menerangkan simbol yang baru ditemui, dan yang kedua menggambarkan simbol sebelumnya yang ditemui dengan nama yang sama. Satu atau kedua-dua simbol ini akan menjadi simbol biasa.

1.

Mengubah simbol biasa menjadi rujukan, kerana sudah ada definisi simbol.

(

): amaran: biasa `'ditindih oleh definisi (
): amaran: ditakrifkan di sini

2.

Menukar simbol yang biasa menjadi rujukan, kerana definisi kemudian untuk simbol itu ditemui. Ini adalah sama dengan kes sebelumnya, kecuali simbol-simbol itu ditemui dalam susunan yang berbeza.

(

): amaran: definisi `'mengatasi umum (
): amaran: umum ada di sini

3.

Menggabungkan simbol yang sama dengan simbol biasa bersaiz yang sama sebelumnya.

(

): amaran: pelbagai umum `' (
): amaran: umum terdahulu ada di sini

4.

Menggabungkan simbol biasa dengan simbol biasa yang lebih besar sebelum ini.

(

): amaran: biasa `'diatasi oleh yang lebih besar (
): amaran: lebih umum adalah di sini

5.

Menggabungkan simbol biasa dengan simbol biasa yang lebih kecil sebelumnya. Ini adalah sama dengan kes sebelumnya, kecuali simbol-simbol itu ditemui dalam susunan yang berbeza.

(

): amaran: biasa `'mengatasi lebih umum (
): amaran: lebih umum adalah di sini

- pembina-pembina

Amaran jika mana-mana pembina global digunakan. Ini hanya berguna untuk beberapa format fail objek. Untuk format seperti COFF atau ELF, penghubung tidak dapat mengesan penggunaan pembina global.

--warn-multiple-gp

Amaran jika banyak nilai penunjuk global diperlukan dalam fail output. Ini hanya bermakna bagi pemproses tertentu, seperti Alpha. Khususnya, sesetengah pemproses meletakkan pemalar bernilai tinggi dalam bahagian khas. Daftar khas (penunjuk global) menunjuk ke tengah-tengah bahagian ini, supaya pemalar boleh dimuatkan dengan cekap melalui mod alamat relatif berdaftar pangkalan. Oleh kerana offset dalam mod relatif berdaftar asas tetap dan relatif kecil (contohnya, 16 bit), ini mengehadkan saiz maksimum kolam berterusan. Oleh itu, dalam program besar, ia sering diperlukan untuk menggunakan pelbagai nilai penunjuk global untuk dapat menangani semua pemalar yang mungkin. Opsyen ini menyebabkan amaran dikeluarkan apabila kes ini berlaku.

--warn-once

Hanya memberi amaran sekali untuk setiap simbol yang tidak ditentukan, dan bukannya sekali setiap modul yang merujuknya.

--warn-section-align

Amaran jika alamat seksyen output diubah kerana penyelarasan. Biasanya, penjajaran akan ditetapkan oleh bahagian input. Alamat hanya akan ditukar jika tidak dinyatakan dengan jelas; iaitu, jika arahan "SEKSYEN" tidak menentukan alamat permulaan bagi bahagian itu.

--whole-archive

Untuk setiap arkib yang disebut di baris arahan selepas--whole-archive pilihan, masukkan setiap fail objek dalam arkib dalam pautan, bukannya mencari arkib untuk fail objek yang diperlukan. Ini biasanya digunakan untuk menghidupkan fail arkib ke dalam perpustakaan yang dikongsi, memaksa setiap objek dimasukkan ke dalam perpustakaan kongsi yang terhasil. Pilihan ini boleh digunakan lebih daripada satu kali.

Dua nota apabila menggunakan pilihan ini dari gcc: Pertama, gcc tidak tahu mengenai pilihan ini, jadi anda harus menggunakannya-Wl, -nasa-arkib. Kedua, jangan lupa gunakan-Wl, -no-keseluruhan-arkibselepas senarai arkib anda, kerana gcc akan menambah senarai arkibnya sendiri ke pautan anda dan anda mungkin tidak mahu bendera ini memberi kesan kepada mereka juga.

--bungkus simbol

Gunakan fungsi pembalut untuk simbol . Apa-apa rujukan yang tidak jelas kepada simbol akan diselesaikan kepada "__ wrap_symbol". Sebarang rujukan yang tidak jelas kepada "__real_symbol" akan diselesaikan simbol .

Ini boleh digunakan untuk menyediakan pembungkus untuk fungsi sistem. Fungsi pembungkus harus dipanggil "__wrap_symbol". Jika ingin memanggil fungsi sistem, ia harus memanggil "__ real_symbol".

Berikut adalah contoh remeh:

tidak sah * __wrap_malloc (int c) {printf ("malloc dipanggil dengan% ld n", c); kembali __real_malloc (c); }

Jika anda menghubungkan kod lain dengan fail ini menggunakan- wc malloc, maka semua panggilan ke "malloc" akan memanggil fungsi "__wrap_malloc" sebaliknya. Panggilan untuk "__real_malloc" dalam "__wrap_malloc" akan memanggil fungsi sebenar "malloc".

Anda mungkin ingin menyediakan fungsi "__real_malloc" juga, supaya pautan tanpa--bungkus pilihan akan berjaya. Jika anda melakukan ini, anda tidak sepatutnya meletakkan definisi "__ real_malloc" dalam fail yang sama dengan "__wrap_malloc"; jika anda lakukan, penghimpun boleh menyelesaikan panggilan sebelum penyambung mempunyai peluang untuk membungkusnya ke "malloc".

--buat-baru-dtags

--disable-new-dtags

Penghubung ini boleh membuat tag dinamik baru dalam ELF. Tetapi sistem ELF yang lebih tua mungkin tidak memahami mereka. Jika anda tentukan--buat-baru-dtags, tag dinamik akan dibuat seperti yang diperlukan. Jika anda tentukan--disable-new-dtags, tiada tag dinamik baru akan diwujudkan. Secara lalai, teg dinamik baru tidak dibuat. Ambil perhatian bahawa pilihan tersebut hanya tersedia untuk sistem ELF.

Penyambung i386 PE menyokong-shared pilihan, yang menyebabkan keluaran menjadi perpustakaan dinamik (DLL) yang dinamik dan tidak boleh dilaksanakan secara normal. Anda harus menamakan output "* .dll" apabila anda menggunakan pilihan ini. Selain itu, linker menyokong sepenuhnya fail "* .def" standard, yang mungkin ditentukan pada baris arahan linker seperti file objek (sebenarnya, ia harus mendahului arkib ia mengeksport simbol dari, untuk memastikan bahawa mereka dapat dihubungkan, seperti fail objek biasa).

Sebagai tambahan kepada pilihan umum untuk semua sasaran, linker i386 PE menyokong pilihan baris perintah tambahan yang khusus untuk target PE i386. Pilihan yang mengambil nilai boleh dipisahkan dari nilai mereka dengan sama ada ruang atau tanda sama.

--add-stdcall-alias

Sekiranya diberikan, simbol dengan akhiran stdcall (@ nn ) akan dieksport sebagai-dan juga dengan akhiran dilucutkan.

--basis-fail fail

Gunakan fail sebagai nama fail untuk menyimpan alamat asas semua relokasi yang diperlukan untuk menjana DLL dengan dlltool .

--dll

Buat DLL dan bukan laku laksana tetap. Anda juga boleh menggunakannya-shared atau nyatakan "PERPUSTAKAAN" dalam fail ".def" yang diberikan.

--penyediaan-stdcall-fixup

--disable-stdcall-fixup

Jika pautan itu menemui simbol yang tidak dapat diselesaikan, ia akan cuba melakukan `` linking fuzzy '' dengan mencari simbol lain yang jelas yang berbeza hanya dengan format nama simbol (cdecl vs stdcall) dan akan menyelesaikan simbol tersebut dengan menghubungkan kepada perlawanan. Sebagai contoh, simbol "_foo" yang tidak jelas mungkin dikaitkan dengan fungsi "_foo @ 12", atau lambang yang tidak jelas "_bar @ 16" mungkin dikaitkan dengan fungsi "_bar". Apabila penyambung melakukan ini, ia mencetak amaran, kerana biasanya ia sepatutnya gagal dihubungkan, tetapi kadang-kadang mengimport perpustakaan yang dihasilkan dari dll pihak ketiga mungkin memerlukan ciri ini dapat digunakan. Jika anda tentukan--penyediaan-stdcall-fixup, ciri ini diaktifkan sepenuhnya dan amaran tidak dicetak. Jika anda tentukan--disable-stdcall-fixup, ciri ini dinyahdayakan dan ketidakpadanan itu dianggap sebagai kesilapan.

- eksport-semua-simbol

Sekiranya diberikan, semua simbol global dalam objek yang digunakan untuk membina DLL akan dieksport oleh DLL. Perhatikan bahawa ini adalah lalai jika terdapat sebaliknya tidak akan menjadi sebarang simbol yang dieksport. Apabila simbol secara eksplisit dieksport melalui fail DEF atau secara eksplisit dieksport melalui atribut fungsi, lalai adalah untuk tidak mengeksport apa-apa lagi kecuali pilihan ini diberikan. Perhatikan bahawa simbol "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", dan "impure_ptr" tidak akan dieksport secara automatik. Selain itu, simbol yang diimport dari DLL lain tidak akan dieksport semula, dan juga simbol-simbol yang menentukan susunan dalaman DLL seperti yang bermula dengan "_head_" atau berakhir dengan "_iname". Di samping itu, tiada simbol dari "libgcc", "libstd ++", "libmingw32", atau "crtX.o" akan dieksport. Simbol-simbol yang namanya bermula dengan "__rtti_" atau "__builtin_" tidak akan dieksport, untuk membantu dengan C ++ DLL. Akhir sekali, terdapat senarai simbol cygwin-private yang tidak dieksport (jelasnya, ini berlaku ketika membina DLL untuk sasaran cygwin).

Ini termasuk cygwin_dll_entry @ 12 "," _cygwin_crt0_common @ 8 "," _ cygwin_noncygwin_dll_entry @ 12 "," _fmode "," _impure_ptr "," cygwin_attach_dll "," cygwin_premain0 "," cygwin_premain1 "," cygwin_premain2 "," cygwin_premain3 ", dan" lingkungan ".

- simbol ekseks simbol , simbol ,…