GNU/Linux >> Belajar Linux >  >> Linux

Cara menghapus peringatan:link.res berisi bagian keluaran; apakah kamu lupa -T?

Itu bukan bug karena ld berperilaku seperti spesifikasinya. Halaman manual dari ld 2.28 berbunyi:

Jika linker tidak dapat mengenali format file objek, itu akan dianggap sebagai skrip linker. Skrip yang ditentukan dengan cara ini menambah skrip penaut utama yang digunakan untuk tautan (baik skrip penaut default atau yang ditentukan dengan menggunakan -T). Fitur ini memungkinkan penaut untuk menautkan ke file yang tampak sebagai objek atau arsip, tetapi sebenarnya hanya mendefinisikan beberapa nilai simbol, atau menggunakan "INPUT" atau "GROUP" untuk memuat objek lain. Menentukan skrip dengan cara ini hanya menambah skrip tautan utama, dengan perintah tambahan ditempatkan setelah skrip utama; gunakan opsi -T untuk mengganti skrip linker default seluruhnya, tetapi perhatikan efek dari perintah "INSERT".

TL;DR☺. Singkatnya:Dalam kebanyakan kasus, pengguna tidak mengetahui skrip tautan yang mereka gunakan karena "skrip utama" (=skrip default ) disediakan oleh rantai alat. Skrip utama sangat mengacu pada intrinsik dari bagian yang dibuat oleh kompiler dan Anda harus mempelajari tali untuk mengubahnya. Sebagian besar pengguna tidak.

Pendekatan umum untuk menyediakan skrip Anda sendiri adalah melalui -T pilihan. Dengan begitu, skrip penaut utama diabaikan dan skrip Anda mengambil alih kendali atas tautan tersebut. Tapi Anda harus menulis semuanya dari awal.

Jika Anda hanya ingin menambahkan fitur minor, Anda dapat menulis spesifikasi ke dalam file dan menambahkan nama file ke baris perintah ld (atau gcc / g++) tanpa -T pilihan. Dengan begitu skrip linker utama masih melakukan pekerjaan utama tetapi file Anda menambahnya. Jika Anda menggunakan pendekatan ini, Anda mendapatkan pesan dari tajuk utas ini untuk memberi tahu Anda bahwa Anda mungkin telah memberikan objek yang rusak secara tidak sengaja.

Sumber kebingungan ini adalah tidak ada cara untuk menentukan peran file tambahan. Ini dapat dengan mudah diselesaikan dengan menambahkan opsi lain ke ld seperti -dT opsi untuk “d efault scriptfile”:Perkenalkan -sT opsi untuk “s file skrip tambahan”.


Ini bug di versi LD tertentu. Abaikan saja untuk saat ini, atau lihat apakah distro Anda memiliki pembaruan untuk LD Anda. (paket binutils)

http://www.freepascal.org/faq.var#unix-ld219


Linux
  1. Bagaimana cara menghitung jumlah tab di setiap baris menggunakan skrip shell?

  2. Bagaimana cara mengelola verbositas log di dalam skrip shell?

  3. Bagaimana cara menghapus tautan simbolik ke direktori?

  1. Bagaimana Anda menghapus/menonaktifkan proses Evolution Data Server

  2. Bagaimana Anda bisa melihat tautan keras yang sebenarnya oleh ls?

  3. Bagaimana Anda menentukan apakah Anda menggunakan sistem Linux atau BSD di dalam skrip?

  1. Bagaimana Anda memulai Linux?

  2. Cara menangkap sesi terminal dan output dengan perintah skrip Linux

  3. Bagaimana Anda bisa menghapus duplikat dari riwayat bash?