Sejak rilis 4.8, CCC compiler C ++ (bagian G ++ dari itu) ditulis tidak dalam C lagi, tetapi dalam C ++ itu sendiri. Saya punya pertanyaan hipotetis tentang ini.
Saya bertanya-tanya bagaimana cara mengkompilasi kode C ++ dari GCC pada platform baru yang belum memiliki compiler C ++. Tentu saja, Anda bisa menggunakan binari prebuilt yang dikompilasi di komputer lain. Atau Anda dapat menggunakan versi GCC yang lebih lama yang ditulis dalam C dan mengkompilasi versi saat ini.
Namun, tanpa binari prebuilt dan hanya versi terbaru, Anda mandek, kan? Jika tidak, apakah ada implikasi lain pada situasi ini yang ditimbulkan oleh peralihan dari C ke C ++ dari proyek GCC?
gcc
sebelum 4.8 dapat dibangun dengan kompiler C yang dikemas dengan sistem operasi yang sewenang-wenang (dan itu akan membatasi Anda untuk banyak C89).Jawaban:
Ini sebenarnya adalah konsep terkenal yang disebut bootstrap . Pada dasarnya, ada, di suatu tempat, basis kode C minimal untuk membangun versi GCC yang mampu membangun basis kode GCC saat ini. Hosting mandiri telah melakukan hal-hal seperti itu selama beberapa dekade.
sumber
gcc
tidak dapat dibangun oleh kompilator hanya ac lagi. Satu-satunya jaminan dengan kompilasi gcc yang mereka buat adalah bahwa versi gcc N dapat dibangun dengan versi gcc N-1.However, without prebuilt binaries and just the newest version, you were stuck, right? If not, are there other implications on this situation raised by the switch from C to C++ of the GCC project?
- itu mengandaikan Anda tidak memiliki akses ke versi sebelumnya juga tidak membahas implikasi lain dari beralih dari C ke C ++ untuk basis kode.Membuat kompiler yang ditulis dalam bahasa yang sama dengan kompilasi disebut bootstrap . Artikel wikipedia menjelaskan sejumlah cara kompiler dapat di-bootstrap.
Dengan batasan Anda bahwa Anda hanya memiliki kode sumber post-4.8 G ++ dan tidak ada binari yang dibuat sebelumnya untuk platform target Anda (tidak ada kompiler C ++ yang ada), maka bootstrap kompiler G ++ dapat dilakukan dengan cara kompilasi silang .
Ketika bootstrap kompiler menggunakan kompilasi silang, Anda membangun beberapa versi kompiler Anda
Jika Anda juga tidak memiliki PC (atau serupa) untuk melakukan langkah-langkah awal, maka Anda memang terjebak, tetapi kemungkinan berada dalam situasi itu dan mencoba untuk bootstrap kompiler diabaikan.
sumber