Dalam Linux, kompilasi silang merujuk kepada penjanaan kod boleh laku pada satu platform pada platform lain, iaitu platform untuk menyusun kod sumber dan platform untuk melaksanakan atur cara yang disusun bagi kod sumber ialah dua platform berbeza . Sebab untuk menggunakan kompilasi silang: 1. Sistem sasaran tidak mempunyai keupayaan untuk menyusun secara asli padanya 2. Platform yang mampu menyusun kod sumber adalah berbeza daripada platform sasaran.
Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.
Kompilasi silang
Apa yang dipanggil "kompilasi silang (Cross_Compile)" merujuk kepada platform untuk menyusun kod sumber dan pelaksanaan program selepas kod sumber disusun Platform adalah dua platform yang berbeza. Contohnya, di bawah platform seni bina/Linux (Ubuntu) Intel x86, fail boleh laku yang dijana menggunakan rantai alat kompilasi silang dijalankan di bawah seni bina ARM/Linux.
Ringkasnya, ia adalah untuk menjana kod boleh laku pada satu platform pada platform lain. Seni bina yang sama boleh menjalankan sistem pengendalian yang berbeza, sistem pengendalian yang sama juga boleh berjalan pada seni bina yang berbeza.
Kompilasi silang agak rumit, dan isu berikut mesti dipertimbangkan:
Seni bina CPU: seperti ARM, x86, MIPS, dsb.;
-
Endianness: big-endian dan little-endian; >
Antara Muka Binari Aplikasi (ABI); - Mengapa menggunakan kompilasi silang? Terdapat dua sebab utama:
Seni bina CPU atau sistem pengendalian platform yang mampu menyusun kod sumber adalah berbeza daripada platform sasaran
- Kompilasi silang rantai alat adalah perlu untuk penyusunan silang Ia adalah alat yang sangat diperlukan dan kemahiran yang mesti dikuasai oleh pembangun tertanam.
- Mengapa penyusunan silang sukar?
Kompilasi asli mudah alih adalah sukar. Kebanyakan program dibangunkan pada perkakasan x86 dan disusun secara asli. Penyusunan silang boleh menghadapi dua jenis masalah: masalah dengan program itu sendiri dan masalah dengan sistem binaan.
Kategori pertama isu mempengaruhi semua sasaran bukan x86, termasuk asli dan binaan silang. Kebanyakan program membuat andaian tentang jenis mesin yang mereka jalankan, yang mesti sepadan dengan platform yang berkaitan, jika tidak, program itu tidak akan berjalan. Andaian biasa termasuk:Saiz perkataan - menyalin penunjuk ke int mungkin kehilangan data pada platform 64-bit, tentukan saiz malloc dengan mendarab dengan 4 dan bukannya saiz(panjang) tidak bagus. Limpahan integer membawa kepada kelemahan keselamatan yang halus, seperti "jika (x y Endianness - Sistem yang berbeza menyimpan data binari secara dalaman dengan cara yang berbeza dan membaca data int atau apungan daripada cakera atau rangkaian mungkin memerlukan penukaran.
- Penjajaran - Sesetengah platform (seperti lengan) hanya boleh membaca atau menulis integer daripada alamat yang berbilang genap 4 bait, jika tidak, segfault akan berlaku. Pemprosesan mana-mana data yang sejajar dan tidak sejajar adalah lebih perlahan, dan pengkompil biasanya mengisi pembolehubah penjajaran struktur. Merawat struktur sebagai blok data yang boleh dihantar ke cakera atau melalui rangkaian memerlukan kerja tambahan untuk memastikan perwakilan yang konsisten.
- Tandatangan lalai - jenis data "char", lalai kepada yang ditandatangani atau tidak ditandatangani, berbeza dari platform ke platform (dari pengkompil kepada pengkompil), membawa kepada beberapa pepijat yang sangat mengejutkan . Penyelesaian mudah ialah menyediakan parameter pengkompil seperti "-funsigned-char" untuk memaksa lalai kepada nilai yang diketahui.
- NOMMU - Jika platform sasaran tidak mempunyai unit pengurusan memori, beberapa perkara perlu diubah. Memerlukan vfork(), bukan fork(), hanya jenis mmap() tertentu yang berfungsi (kongsi atau baca sahaja, tetapi bukan salin atas tulis), timbunan tidak berkembang secara dinamik.
- Kebanyakan pakej bertujuan untuk mudah alih apabila disusun secara tempatan dan sekurang-kurangnya akan menerima patch yang membetulkan mana-mana isu di atas (kecuali isu NOMMU) yang diserahkan kepada senarai mel pembangunan yang sesuai.
Kemudian kompilasi silang.
Selain isu dengan kompilasi asli, penyusunan silang mempunyai set isu tersendiri:
Konfigurasi Masalah - Pakej yang mempunyai langkah konfigurasi yang berasingan (bahagian "./configure" pada pemasangan konfigurasi/make/make standard), yang biasanya menguji perkara seperti endian atau saiz halaman, adalah mudah alih apabila disusun secara asli. Apabila menyusun silang, nilai ini berbeza antara sistem hos dan sistem sasaran, dan menjalankan ujian pada sistem hos memberikan jawapan yang salah. Apabila sasaran tidak mempunyai pakej perisian atau versi tidak serasi, konfigurasi mengesan sama ada terdapat sokongan pakej perisian pada hos.
HOSTCC lwn TARGETCC - Proses binaan memerlukan kompilasi untuk dijalankan pada sistem hos, seperti yang dikonfigurasikan di atas untuk ujian atau program yang menjana kod (seperti program C yang mencipta fail .h, #disertakan semasa binaan utama) . Gantikan pengkompil hos dengan pengkompil sasaran, memecahkan perpustakaan masa jalan semasa proses binaan. Pustaka sedemikian memerlukan akses kepada hos dan penyusun sasaran dan perlu dinyatakan bila hendak menggunakannya.
Kebocoran rantai alat - rantai alat kompilasi silang yang dikonfigurasikan dengan buruk yang membocorkan beberapa kandungan sistem hos ke dalam atur cara yang disusun, menyebabkan kegagalan yang selalunya mudah dikesan, tetapi sukar untuk didiagnosis dan betul. Rantaian alat mungkin #termasuk fail pengepala yang salah atau mencari laluan perpustakaan yang salah semasa memaut. Perpustakaan kongsi selalunya bergantung pada perpustakaan kongsi lain, yang berpotensi menyelinap dalam rujukan masa pautan yang tidak dijangka kepada sistem hos.
Perpustakaan - Program yang dipautkan secara dinamik mesti mengakses perpustakaan kongsi yang sesuai pada masa penyusunan. Pustaka kongsi sistem sasaran perlu ditambahkan pada rantai alat kompilasi silang supaya program boleh memautkannya.
Pengujian - Pada binaan asli, sistem pembangunan menyediakan persekitaran ujian yang mudah. Apabila menyusun silang, mengesahkan bahawa "hello world" berjaya dibina mungkin memerlukan konfigurasi (sekurang-kurangnya) pemuat but, kernel, sistem fail akar dan perpustakaan kongsi.
Nota Kaki 1: Perbezaan paling ketara antara jenis komputer ialah pemproses yang melaksanakan program, perbezaan lain termasuk perpustakaan ABI (seperti glibc lwn. uClibc), mesin dengan endian boleh dikonfigurasikan (arm vs. armeb), atau mesin dengan mod berbeza yang boleh menjalankan kod 32-bit dan 64-bit (seperti x86-64 pada x86).
Nota Kaki 2: Apabila membina penyusun, jenis ketiga dipanggil "Canadian cross", penyusun silang yang tidak berjalan pada sistem hos. Canadian Cross-Build pengkompil yang berjalan pada satu platform sasaran dan menjana kod pada mesin sasaran yang lain. Mula-mula buat pengkompil silang sementara daripada hos ke sasaran pertama dan sebagai sasaran kedua bina pengkompil silang lain untuk membina pengkompil luaran sedemikian. Sasaran pengkompil silang pertama menjadi mesin hos di mana pengkompil baharu akan dijalankan, dan sasaran kedua ialah platform di mana pengkompil baharu akan menjana output. Teknik ini sering digunakan untuk menyusun silang pengkompil asli baharu untuk platform sasaran.
Nota Kaki 3: Sistem desktop moden cukup pantas sehingga meniru sasaran yang disusun secara asli di bawah emulator sebenarnya merupakan strategi yang berdaya maju. Jauh lebih perlahan daripada penyusunan silang, memerlukan mencari atau menjana persekitaran binaan asli untuk sasaran (penyusun silang mesti disediakan juga), mungkin ranap disebabkan perbezaan antara emulator dan perkakasan sebenar untuk digunakan.
Nota Kaki 4: Rantai alat kompilasi silang cenderung untuk memberi awalan kepada nama utiliti mereka, ala "armv5l-linux-gcc". Jika hanya dipanggil "gcc", hos dan penyusun asli tidak boleh berada dalam $PATH pada masa yang sama.
Cadangan berkaitan: "Tutorial Video Linux"
Atas ialah kandungan terperinci Apakah kompilasi silang linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kos pemilikan Linux biasanya lebih rendah daripada tingkap. 1) Linux tidak memerlukan yuran lesen, menjimatkan banyak kos, sementara Windows memerlukan membeli lesen. 2) Linux mempunyai keperluan perkakasan yang rendah dan boleh memanjangkan hayat perkhidmatan peranti. 3) Komuniti Linux menyediakan sokongan percuma untuk mengurangkan kos penyelenggaraan. 4) Linux sangat selamat dan mengurangkan kerugian produktiviti. 5) Keluk pembelajaran Linux adalah curam, tetapi tingkap lebih mudah digunakan. Pilihan harus berdasarkan keperluan dan anggaran khusus.

Kunci untuk memasang sistem dwi di Linux dan Windows adalah pembahagian dan tetapan boot. 1. Penyediaan termasuk sandaran data dan memampatkan partisi sedia ada untuk membuat ruang; 2. Gunakan Ventoy atau Rufus untuk membuat cakera USB Boot Linux, cadangkan Ubuntu; 3. Pilih "wujud bersama dengan sistem lain" atau partition secara manual semasa pemasangan ( /sekurang -kurangnya 20GB, /ruang tinggal ruang, swap pilihan); 4. Semak pemasangan pemandu pihak ketiga untuk mengelakkan masalah perkakasan; 5. Jika anda tidak memasukkan menu boot grub selepas pemasangan, anda boleh menggunakan pembaikan boot untuk membaiki boot atau menyesuaikan urutan permulaan BIOS. Selagi langkah -langkahnya jelas dan operasi dilakukan dengan betul, keseluruhan proses tidak rumit.

Kunci untuk membolehkan repositori EPEL adalah untuk memilih kaedah pemasangan yang betul mengikut versi sistem. Pertama, sahkan jenis sistem dan versi, dan gunakan perintah CAT/ETC/OS-RELEASE untuk mendapatkan maklumat; Kedua, membolehkan EPEL melalui dnfinstallepel-rilease pada CentOS/Rockylinux, dan arahan 8 dan 9 versi adalah sama; Ketiga, anda perlu memuat turun secara manual versi fail .repo yang sepadan dan pasangkannya di RHEL; Keempat, anda boleh memadamkan semula kekunci GPG ketika menghadapi masalah. Perhatikan bahawa versi lama mungkin tidak disokong, dan anda juga boleh mempertimbangkan untuk membolehkan Epel-Next untuk mendapatkan pakej ujian. Selepas melengkapkan langkah -langkah di atas, gunakan DNFrepolist untuk mengesahkan bahawa repositori EPEL berjaya ditambah.

Pengguna Newbie harus terlebih dahulu menjelaskan keperluan penggunaan mereka apabila memilih taburan Linux. 1. Pilih Ubuntu atau Linuxmint untuk kegunaan harian; pengaturcaraan dan pembangunan sesuai untuk Manjaro atau Fedora; Gunakan Lubuntu dan sistem ringan lain untuk peranti lama; Mengesyorkan Centosstream atau Debian untuk mempelajari prinsip -prinsip yang mendasari. 2. Kestabilan lebih disukai untuk Ubuntults atau Debian; Anda boleh memilih Arch atau Manjaro untuk meneruskan ciri -ciri baru. 3. Dari segi sokongan masyarakat, Ubuntu dan Linuxmint kaya dengan sumber daya, dan dokumen gerbang berorientasikan secara teknikal. 4. Dari segi kesukaran pemasangan, Ubuntu dan Linuxmint agak mudah, dan gerbang sesuai untuk mereka yang mempunyai keperluan asas. Adalah disyorkan untuk mencubanya terlebih dahulu dan kemudian membuat keputusan.

Langkah-langkah untuk menambah cakera keras baru ke sistem Linux adalah seperti berikut: 1. Sahkan bahawa cakera keras diiktiraf dan menggunakan LSBLK atau FDISK-L untuk memeriksa; 2. Gunakan partisi fdisk atau berpisah, seperti fdisk/dev/sdb dan buat dan simpan; 3. Format partition ke sistem fail, seperti mkfs.ext4/dev/sdb1; 4. Gunakan perintah gunung untuk gunung sementara, seperti mount/dev/sdb1/mnt/data; 5. Ubah suai /etc /fstab untuk mencapai gunung automatik pada komputer, dan uji gunung terlebih dahulu untuk memastikan ketepatannya. Pastikan anda mengesahkan keselamatan data sebelum operasi untuk mengelakkan masalah sambungan perkakasan.

Ada masalah memuat naik fail di Google Chrome? Ini mungkin menjengkelkan, bukan? Sama ada anda melampirkan dokumen ke e -mel, berkongsi imej di media sosial, atau mengemukakan fail penting untuk kerja atau sekolah, proses muat naik fail yang lancar adalah penting. Jadi, ia boleh mengecewakan jika fail anda memuat naik terus gagal dalam Chrome pada Windows PC. Jika anda tidak bersedia untuk menyerahkan penyemak imbas kegemaran anda, berikut adalah beberapa petua untuk pembetulan yang tidak dapat memuat naik fail pada Windows Google Chrome 1. Mulailah dengan pembaikan sejagat sebelum kita belajar tentang sebarang petua penyelesaian masalah lanjutan, sebaiknya mencuba beberapa penyelesaian asas yang disebutkan di bawah. Penyelesaian Masalah Sambungan Internet: Sambungan Internet

Log dalam sistem Linux biasanya disimpan dalam direktori /var /log, yang mengandungi pelbagai fail log utama, seperti syslog atau mesej (log sistem log), auth.log (peristiwa pengesahan rekod), kern.log (rekod kernel), dpkg atau yum.log Kandungan log boleh dilihat melalui perintah kucing, ekor-f atau jurnal; Log aplikasi sering terletak di subdirektori di bawah /var /log, seperti Apache's Apache2 atau Direktori Httpd, fail log MySQL, dan lain -lain; Pada masa yang sama, perlu diperhatikan bahawa kebenaran log biasanya memerlukan s

SUDO bermaksud "SuppitutiteUserdo" atau "Superuserdo", yang membolehkan pengguna menjalankan arahan dengan kebenaran pengguna lain (biasanya akar). Penggunaan terasnya termasuk: 1. Melaksanakan operasi peringkat sistem seperti memasang perisian atau fail sistem penyuntingan; 2. Mengakses direktori atau log yang dilindungi; 3. Menguruskan perkhidmatan seperti memulakan semula Nginx; 4. Ubah suai tetapan global seperti /etc /hosts. Apabila menggunakannya, sistem akan menyemak konfigurasi /etc /sudoers dan mengesahkan kata laluan pengguna, memberikan keizinan sementara dan bukannya secara berterusan log masuk sebagai akar, memastikan keselamatan. Amalan terbaik termasuk: hanya apabila perlu, elakkan secara membabi buta melaksanakan perintah rangkaian, mengedit fail sudoers dengan Visudo, dan mempertimbangkan operasi berterusan.
