ar - membuat, memodifikasi, dan mengekstrak dari arsip
ar [-X32_64] [-]p[mod] [--plugin name] [--target bfdname] [--output dirname] [--record-libdeps libdeps] [--thin] [relpos] [count] archive [member...]
Program ar GNU membuat, memodifikasi, dan mengekstrak dari arsip. Sebuah arsip adalah satu file yang menampung kumpulan file lain dalam suatu struktur yang memungkinkan untuk mengambil file individu asli (disebut anggota arsip).
Konten, mode (izin), stempel waktu, pemilik, dan grup file asli dipertahankan dalam arsip, dan dapat dipulihkan saat ekstraksi.
GNU ar dapat memelihara arsip yang anggotanya memiliki nama dengan panjang berapa pun; namun, tergantung pada bagaimana ar dikonfigurasi pada sistem Anda, batasan panjang nama anggota dapat diterapkan untuk kompatibilitas dengan format arsip yang dikelola dengan alat lain. Jika ada, batasnya seringkali 15 karakter (khas format yang terkait dengan a.out) atau 16 karakter (khas format yang terkait dengan coff).
ar dianggap sebagai utilitas biner karena arsip semacam ini paling sering digunakan sebagai perpustakaan yang menyimpan subrutin yang biasanya dibutuhkan. Karena pustaka sering kali bergantung pada pustaka lain, ar juga dapat merekam dependensi pustaka saat opsi --record-libdeps ditentukan.
ar membuat indeks ke simbol yang ditentukan dalam modul objek yang dapat dipindahkan dalam arsip saat Anda menentukan pengubah s. Setelah dibuat, indeks ini diperbarui dalam arsip setiap kali ar melakukan perubahan pada kontennya (simpan untuk operasi pembaruan q). Arsip dengan indeks seperti itu mempercepat penautan ke perpustakaan, dan memungkinkan rutinitas di perpustakaan untuk memanggil satu sama lain tanpa memperhatikan penempatannya di arsip.
Anda dapat menggunakan nm -s atau nm --print-armap untuk mencantumkan tabel indeks ini. Jika arsip tidak memiliki tabel, bentuk lain dari ar yang disebut ranlib dapat digunakan untuk menambahkan tabel saja.
GNU ar secara opsional dapat membuat arsip tipis, yang berisi indeks simbol dan referensi ke salinan asli dari file anggota arsip. Ini berguna untuk membangun perpustakaan untuk digunakan dalam pohon pembangunan lokal, di mana objek yang dapat dipindahkan diharapkan tetap tersedia, dan menyalin konten setiap objek hanya akan membuang waktu dan ruang.
Arsip bisa tipis atau bisa juga normal. Tidak mungkin keduanya sekaligus. Setelah arsip dibuat, formatnya tidak dapat diubah tanpa terlebih dahulu menghapusnya, lalu membuat arsip baru sebagai gantinya.
Arsip tipis juga diratakan, sehingga menambahkan satu arsip tipis ke arsip tipis lainnya tidak menumpuknya, seperti yang terjadi pada arsip normal. Sebagai gantinya, elemen dari arsip pertama ditambahkan satu per satu ke arsip kedua.
Jalur ke elemen arsip disimpan relatif terhadap arsip itu sendiri.
GNU ar dirancang agar kompatibel dengan dua fasilitas yang berbeda. Anda dapat mengontrol aktivitasnya menggunakan opsi baris perintah, seperti berbagai jenis ar pada sistem Unix; atau, jika Anda menetapkan opsi baris perintah tunggal -M, Anda dapat mengontrolnya dengan skrip yang disediakan melalui input standar, seperti program pustakawan MRI.
GNU ar memungkinkan Anda menggabungkan kode operasi p dan flag pengubah mod dalam urutan apa pun, dalam argumen baris perintah pertama.
Jika mau, Anda dapat memulai argumen baris perintah pertama dengan tanda hubung.
Keyletter p menentukan operasi apa yang akan dijalankan; itu mungkin salah satu dari yang berikut, tetapi Anda harus menentukan hanya salah satunya:
Hapus modul dari arsip. Tentukan nama modul yang akan dihapus sebagai anggota...; arsip tidak tersentuh jika Anda menentukan tidak ada file untuk dihapus. Jika Anda menentukan pengubah v, ar mencantumkan setiap modul saat dihapus.
Gunakan operasi ini untuk memindahkan anggota dalam arsip. Urutan anggota dalam arsip dapat membuat perbedaan dalam cara program ditautkan menggunakan pustaka, jika simbol didefinisikan di lebih dari satu anggota. Jika tidak ada pengubah yang digunakan dengan m, setiap anggota yang Anda beri nama dalam argumen member akan dipindahkan ke akhir arsip; Anda dapat menggunakan pengubah a, b, atau i untuk memindahkannya ke tempat tertentu.
Cetak anggota arsip yang ditentukan, ke file output standar. Jika pengubah v ditentukan, tampilkan nama anggota sebelum menyalin isinya ke keluaran standar. Jika Anda tidak menentukan argumen anggota, semua file dalam arsip akan dicetak.
Tambahkan cepat; Secara historis, tambahkan file anggota... ke akhir arsip, tanpa memeriksa penggantinya. Pengubah a, b, dan i tidak memengaruhi operasi ini; anggota baru selalu ditempatkan di akhir arsip. Pengubah v membuat ar mencantumkan setiap file saat ditambahkan. Karena inti dari operasi ini adalah kecepatan, implementasi ar memiliki opsi untuk tidak memperbarui tabel simbol arsip jika ada. Akan tetapi, terlalu banyak sistem yang berbeda menganggap bahwa tabel simbol selalu terkini, sehingga GNU ar akan membuat ulang tabel bahkan dengan penambahan cepat. Catatan - GNU ar memperlakukan perintah qs sebagai sinonim untuk r - mengganti file yang sudah ada di arsip dan menambahkan yang baru di akhir.
Masukkan file anggota... ke dalam arsip (dengan pengganti). Operasi ini berbeda dari q karena setiap anggota yang sudah ada sebelumnya akan dihapus jika namanya cocok dengan yang ditambahkan. Jika salah satu file bernama anggota... tidak ada, ar menampilkan pesan kesalahan, dan tidak mengganggu anggota arsip yang ada yang cocok dengan nama itu. Secara default, anggota baru ditambahkan di akhir file; namun Anda dapat menggunakan salah satu pengubah a, b, atau i untuk meminta penempatan relatif terhadap beberapa anggota yang ada. Pengubah v yang digunakan dengan operasi ini memunculkan baris keluaran untuk setiap file yang disisipkan, bersama dengan salah satu huruf a atau r untuk menunjukkan apakah file ditambahkan (tidak ada anggota lama yang dihapus) atau diganti.
Tambahkan indeks ke arsip, atau perbarui jika sudah ada. Perhatikan bahwa perintah ini merupakan pengecualian dari aturan bahwa hanya boleh ada satu huruf perintah, karena dimungkinkan untuk menggunakannya sebagai perintah atau pengubah. Dalam kedua kasus itu melakukan hal yang sama.
Tampilkan tabel yang mencantumkan konten arsip, atau file yang terdaftar di anggota... yang ada di arsip. Biasanya hanya nama anggota yang ditampilkan, tetapi jika pengubah O ditentukan, offset yang sesuai dari anggota juga ditampilkan. Terakhir, untuk melihat mode (izin), stempel waktu, pemilik, grup, dan ukuran pengubah v harus disertakan. Jika Anda tidak menentukan anggota, semua file dalam arsip akan dicantumkan. Jika ada lebih dari satu file dengan nama yang sama (misalnya, fie) dalam arsip (misalnya b.a), daftar ar t b.a fie hanya contoh pertama; untuk melihat semuanya, Anda harus meminta daftar lengkap---dalam contoh kami, ar t b.a.
Ekstrak anggota (bernama anggota) dari arsip. Anda dapat menggunakan pengubah v dengan operasi ini, untuk meminta ar mencantumkan setiap nama saat mengekstraknya. Jika Anda tidak menentukan anggota, semua file dalam arsip akan diekstraksi. File tidak dapat diekstraksi dari arsip tipis, dan ada batasan untuk mengekstraksi dari arsip yang dibuat dengan P: Jalur tidak boleh absolut, tidak boleh berisi .., dan apa pun subdirektori di jalur harus ada. Jika diinginkan untuk menghindari pembatasan ini maka gunakan opsi --output untuk menentukan direktori keluaran.
Sejumlah pengubah (mod) dapat langsung mengikuti huruf kunci p, untuk menentukan variasi perilaku operasi:
Tambahkan file baru setelah anggota arsip yang sudah ada. Jika Anda menggunakan pengubah a, nama anggota arsip yang ada harus ada sebagai argumen relpos, sebelum spesifikasi arsip.
Tambahkan file baru sebelum anggota arsip yang sudah ada. Jika Anda menggunakan pengubah b, nama anggota arsip yang ada harus ada sebagai argumen relpos, sebelum spesifikasi arsip. (sama seperti i).
Buat arsip. arsip yang ditentukan selalu dibuat jika tidak ada, saat Anda meminta pembaruan. Namun peringatan dikeluarkan kecuali Anda menentukan sebelumnya bahwa Anda ingin membuatnya, dengan menggunakan pengubah ini.
Beroperasi dalam mode deterministik. Saat menambahkan file dan indeks arsip, gunakan nol untuk UID, GID, stempel waktu, dan gunakan mode file yang konsisten untuk semua file. Saat opsi ini digunakan, jika ar digunakan dengan opsi identik dan file input identik, beberapa proses akan membuat file output identik terlepas dari pemilik, grup, mode file, atau waktu modifikasi file input. Jika binutils dikonfigurasi dengan --enable-deterministic-archives, maka mode ini aktif secara default. Itu dapat dinonaktifkan dengan pengubah U, di bawah ini.
Potong nama di arsip. GNU ar biasanya mengizinkan nama file dengan panjang berapa pun. Ini akan menyebabkannya membuat arsip yang tidak kompatibel dengan program ar asli pada beberapa sistem. Jika ini menjadi masalah, pengubah f dapat digunakan untuk memotong nama file saat memasukkannya ke dalam arsip.
Sisipkan file baru sebelum anggota arsip yang sudah ada. Jika Anda menggunakan pengubah i, nama anggota arsip yang ada harus ada sebagai argumen relpos, sebelum spesifikasi arsip. (sama seperti b).
Tentukan dependensi perpustakaan ini. Dependensi harus segera mengikuti karakter opsi ini, harus menggunakan sintaks yang sama dengan baris perintah linker, dan harus ditentukan dalam satu argumen. Yaitu, jika beberapa item diperlukan, item tersebut harus dikutip untuk membentuk satu argumen baris perintah. Misalnya L -L/usr/local/lib -lmydep1 -lmydep2
Menggunakan parameter hitung. Ini digunakan jika ada banyak entri dalam arsip dengan nama yang sama. Ekstrak atau hapus instance count dari nama yang diberikan dari arsip.
Pertahankan tanggal asli anggota saat mengekstraknya. Jika Anda tidak menentukan pengubah ini, file yang diekstraksi dari arsip akan dicap dengan waktu ekstraksi.
Tampilkan offset anggota di dalam arsip. Gunakan bersama dengan opsi t.
Gunakan nama jalur lengkap saat mencocokkan atau menyimpan nama di arsip. Arsip yang dibuat dengan nama jalur lengkap tidak sesuai dengan POSIX, dan karenanya mungkin tidak berfungsi dengan alat selain alat GNU terbaru. Memodifikasi arsip tersebut dengan GNU ar tanpa menggunakan P akan menghapus nama jalur lengkap kecuali arsip tersebut adalah arsip tipis. Perhatikan bahwa P mungkin berguna saat menambahkan file ke arsip tipis karena r tanpa P mengabaikan jalur saat memilih elemen mana yang akan diganti. Jadi ar rcST archive.a subdir/file1 subdir/file2 file1 akan menghasilkan subdir/file1 pertama diganti dengan file1 dari direktori saat ini. Menambahkan P akan mencegah penggantian ini.
Tulis indeks file objek ke dalam arsip, atau perbarui yang sudah ada, meskipun tidak ada perubahan lain yang dilakukan pada arsip. Anda dapat menggunakan bendera pengubah ini dengan operasi apa pun, atau sendirian. Menjalankan ar s di arsip sama dengan menjalankan ranlib di arsip.
Jangan buat tabel simbol arsip. Ini dapat mempercepat pembangunan perpustakaan besar dalam beberapa langkah. Arsip yang dihasilkan tidak dapat digunakan dengan linker. Untuk membuat tabel simbol, Anda harus menghilangkan pengubah S pada eksekusi terakhir ar, atau Anda harus menjalankan ranlib pada arsip .
Alias usang untuk --thin. T tidak disarankan karena dalam banyak implementasi ar T memiliki arti yang berbeda, seperti yang ditentukan oleh X/Open System Interface.
Biasanya, ar r... menyisipkan semua file yang terdaftar ke dalam arsip. Jika Anda ingin menyisipkan hanya file yang Anda cantumkan yang lebih baru dari anggota yang ada dengan nama yang sama, gunakan pengubah ini. Pengubah u hanya diperbolehkan untuk operasi r (ganti). Secara khusus, kombinasi qu tidak diperbolehkan, karena memeriksa stempel waktu akan kehilangan keunggulan kecepatan apa pun dari operasi q.
Jangan jangan beroperasi dalam mode deterministik. Ini kebalikan dari pengubah D, di atas: file yang ditambahkan dan indeks arsip akan mendapatkan nilai UID, GID, stempel waktu, dan mode file yang sebenarnya. Ini adalah default kecuali binutils dikonfigurasi dengan --enable-deterministic-archives.
Pengubah ini meminta versi operasi verbose. Banyak operasi menampilkan informasi tambahan, seperti nama file yang diproses, saat pengubah v ditambahkan.
Pengubah ini menampilkan nomor versi ar.
Program ar juga mendukung beberapa opsi baris perintah yang bukan merupakan pengubah atau tindakan, tetapi yang mengubah perilakunya dengan cara tertentu:
Menampilkan daftar opsi baris perintah yang didukung oleh ar lalu keluar.
Menampilkan informasi versi ar lalu keluar.
ar mengabaikan opsi awal yang dieja -X32_64, untuk kompatibilitas dengan AIX. Perilaku yang dihasilkan oleh opsi ini adalah default untuk GNU ar. ar tidak mendukung opsi -X lainnya; khususnya, tidak mendukung -X32 yang merupakan default untuk AIX ar.
Sakelar baris perintah opsional --plugin name menyebabkan ar memuat plugin bernama name yang menambahkan dukungan untuk lebih banyak format file, termasuk file objek dengan informasi pengoptimalan waktu tautan. Opsi ini hanya tersedia jika rantai alat dibuat dengan dukungan plugin diaktifkan. Jika --plugin tidak tersedia, tetapi dukungan plugin telah diaktifkan, maka ar mengulangi file di $ {libdir}/bfd-plugins dalam urutan abjad dan plugin pertama yang mengklaim objek yang dimaksud digunakan. Perhatikan bahwa direktori pencarian plugin ini bukan yang digunakan oleh opsi -plugin ld. Untuk membuat ar menggunakan plugin linker, itu harus disalin ke direktori $ {libdir}/bfd-plugins. Untuk kompilasi berbasis GCC, plugin linker disebut liblto_plugin.so.0.0.0. Untuk kompilasi berbasis Clang disebut LLVMgold.so. Plugin GCC selalu kompatibel dengan versi sebelumnya, jadi cukup menyalin yang terbaru saja.
Sakelar baris perintah opsional --target bfdname menentukan bahwa anggota arsip berada dalam format kode objek yang berbeda dari format default sistem Anda. Melihat
Opsi --output dapat digunakan untuk menentukan jalur ke direktori tempat anggota arsip harus diekstraksi. Jika opsi ini tidak ditentukan maka direktori saat ini akan digunakan. Catatan - meskipun keberadaan opsi ini menyiratkan operasi ekstraksi x, opsi itu tetap harus disertakan pada baris perintah.
Opsi --record-libdeps identik dengan pengubah l, hanya ditangani dalam bentuk panjang.
Jadikan arsip yang ditentukan sebagai arsip tipis. Jika sudah ada dan merupakan arsip biasa, anggota yang ada harus ada di direktori yang sama dengan arsip.
Baca opsi baris perintah dari file. Opsi baca disisipkan sebagai pengganti opsi @file asli. Jika file tidak ada, atau tidak dapat dibaca, maka opsi akan diperlakukan secara harfiah, dan tidak dihapus. Opsi di file dipisahkan oleh spasi putih. Karakter spasi dapat disertakan dalam opsi dengan mengapit seluruh opsi dalam tanda kutip tunggal atau ganda. Karakter apa pun (termasuk garis miring terbalik) dapat disertakan dengan mengawali karakter yang akan disertakan dengan garis miring terbalik. file mungkin berisi opsi @file tambahan; opsi semacam itu akan diproses secara rekursif.
nm (1), ranlib (1), and the Info entries for binutils.
Hak Cipta (c) 1991-2023 Free Software Foundation, Inc.
Izin diberikan untuk menyalin, mendistribusikan dan/atau memodifikasi dokumen ini di bawah persyaratan Lisensi Dokumentasi Bebas GNU, Versi 1.3 atau versi selanjutnya yang diterbitkan oleh Free Software Foundation; tanpa Bagian Invarian, tanpa Teks Sampul Depan, dan tanpa Teks Sampul Belakang. Salinan lisensi disertakan dalam bagian berjudul Lisensi Dokumentasi Bebas GNU.