Skrip ./configure
menerima 3 opsi --build
, --host
dan --target
. Saya membingungkan peran mereka. Apa perbedaan dan semantiknya?
121
Skrip ./configure
menerima 3 opsi --build
, --host
dan --target
. Saya membingungkan peran mereka. Apa perbedaan dan semantiknya?
--host
dan--build
. Saya punya dua proyek C ++ dan tidak mungkin membangun untuk Android karena Autotools sangat kacau. Itu bersikeras menjalankan tes menggunakan toolchain host.Jawaban:
Seperti tercantum dalam entri blog ini dan disebutkan di Persyaratan Konfigurasi GCC ,
--target
hanya berlaku saat Anda menyusun toolchain. Saat Anda melakukan kompilasi silang normal perpustakaan atau biner yang Anda gunakanNamun, ketika Anda sedang membangun toolchain, hal bisa lebih rumit. Saya pikir yang berikut ini benar (meskipun saya tidak bisa mengatakan saya pernah secara manual mengompilasi cross-debugger):
Katakanlah Anda memiliki:
Anda akan mengkonfigurasi dan membangun server debugging (mis. Gdbserver) untuk dijalankan pada perangkat tertanam Anda
sehingga Anda dapat menggunakan perangkat tertanam dan menjalankan "gdbserver: 1234 a.out" untuk memulai debugging dan mendengarkan pada port 1234.
Anda kemudian akan membangun klien debugging (yang menghubungkan dan mengontrol gdbserver) dengan
yang akan Anda salin ke laptop x86 Anda sehingga di lapangan Anda dapat menjalankan "gdbclient embedded.device: 1234" untuk men-debug program a.out Anda.
Ini semua berlaku untuk kompiler juga yang Anda mungkin ingin melihat tautan GCC di atas atau bagian tentang kompilasi silang Kanada ini .
Perhatikan juga bahwa, dalam praktiknya, Anda mungkin tidak melihat build, host, atau target ditentukan karena, menurut halaman manual Autoconf ini , "target defaults to host, host to build, dan build to result of config.guess."
Singkatnya, buat kode
--build
, jalankan--host
dengan--target
lingkungan arsitektur.sumber
Catatan: Argumen
--target
hanya masuk akal saat membangun kompilator (mis. GCC). Saat menjalankanconfigure
sebelum membuat GCC:--build
: mesin yang sedang Anda buat--host
: mesin yang Anda buat--target
: mesin tempat GCC akan menghasilkan binerDari dokumentasi GCC ( Catatan penginstalan khusus Host / Target ):
sumber
--target
tidak relevan dengan proyek apa pun yang bukan kompiler itu sendiri. Jadi mengapa ini adalah opsi konfigurasi standar? Membingungkan.configure
bukanlah puncak dari desain yang bagus dan bersih; Saya kira itu hanya hasil dari fitur khusus aplikasi.