<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=LFS%3A_Tentang_Cross-compilation</id>
	<title>LFS: Tentang Cross-compilation - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=LFS%3A_Tentang_Cross-compilation"/>
	<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=LFS:_Tentang_Cross-compilation&amp;action=history"/>
	<updated>2026-11-01T21:53:27Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.haidhi.my.id/wiki/index.php?title=LFS:_Tentang_Cross-compilation&amp;diff=246&amp;oldid=prev</id>
		<title>SanzSkuy: Created page with &quot;Dalam proses build Linux From Scratch (LFS), salah satu tahap penting adalah cross-compilation. Meski dilakukan di sistem yang sama, tujuannya bukan lintas arsitektur, tapi untuk menjamin kebersihan lingkungan build.  Cross-compiling adalah proses compile code program pada satu sistem (host) untuk dieksekusi pada sistem yang berbeda (target). Contohnya jika kita meng-compile aplikasi Android (ARM) dari PC (x86_64).  Nah tapi kan PC kita buat build dan ngejalanin LFS itu...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=LFS:_Tentang_Cross-compilation&amp;diff=246&amp;oldid=prev"/>
		<updated>2025-04-15T08:56:28Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Dalam proses build Linux From Scratch (LFS), salah satu tahap penting adalah cross-compilation. Meski dilakukan di sistem yang sama, tujuannya bukan lintas arsitektur, tapi untuk menjamin kebersihan lingkungan build.  Cross-compiling adalah proses compile code program pada satu sistem (host) untuk dieksekusi pada sistem yang berbeda (target). Contohnya jika kita meng-compile aplikasi Android (ARM) dari PC (x86_64).  Nah tapi kan PC kita buat build dan ngejalanin LFS itu...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Dalam proses build Linux From Scratch (LFS), salah satu tahap penting adalah cross-compilation. Meski dilakukan di sistem yang sama, tujuannya bukan lintas arsitektur, tapi untuk menjamin kebersihan lingkungan build.&lt;br /&gt;
&lt;br /&gt;
Cross-compiling adalah proses compile code program pada satu sistem (host) untuk dieksekusi pada sistem yang berbeda (target).&lt;br /&gt;
Contohnya jika kita meng-compile aplikasi Android (ARM) dari PC (x86_64).&lt;br /&gt;
&lt;br /&gt;
Nah tapi kan PC kita buat build dan ngejalanin LFS itu sama, kenapa harus cross-compile?&lt;br /&gt;
hal ini untuk menjamin bahwa semua tools yang dibuat bebas dari pengaru sistem host.&lt;br /&gt;
Dengan teknik ini build tools tidak akan menggunakan library atau tool host &lt;br /&gt;
secara tidak sengaja dan semua disusun dari awal, pakai toolchain yang kita buat sendiri. &lt;br /&gt;
Sehingga hasilnya jadi lebih konsisten dan portable&lt;br /&gt;
&lt;br /&gt;
= Cross-compile di LFS = &lt;br /&gt;
di LFS kita melakukan semacam &amp;#039;&amp;#039;fake cross-compilation&amp;#039;&amp;#039; yang tujuannya adalah memastikan build tool tidak bergantung pada sistem host (misal Ubuntu, Fedora, Arch, dll) &lt;br /&gt;
dan menghindari link ke library host yang membuat sistem target tidak pure.&lt;br /&gt;
Hal ini dapat dilakukan dengan:&lt;br /&gt;
*Mengganti triplet host (&amp;lt;code&amp;gt;LFS_TGT&amp;lt;/code&amp;gt;). Contohnya&lt;br /&gt;
&amp;lt;code&amp;gt;x86_64-pc-linux-gnu&amp;lt;/code&amp;gt; diganti menjadi &amp;lt;code&amp;gt;x86_64-lfs-linux-gnu&amp;lt;/code&amp;gt;&lt;br /&gt;
*Gunakan &amp;lt;code&amp;gt;--with-sysroot&amp;lt;/code&amp;gt; untuk set root directory ke sistem LFS (bukan ke root host asli)&lt;br /&gt;
&lt;br /&gt;
== Tiga Tahap Compile == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Caption text&lt;br /&gt;
|-&lt;br /&gt;
! Stage !! Build !! Host !! Target !! Keterangan&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;cc1&amp;lt;/code&amp;gt; || pc || lfs || membangun cross-compiler menggunakan compiler dari sistem host (&amp;lt;code&amp;gt;cc-pc&amp;lt;/code&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;lt;code&amp;gt;cc-lfs&amp;lt;/code&amp;gt; || lfs (masih di-run dari pc) || lfs || 	Bangun compiler native untuk LFS, tapi tetap dijalankan di luar chroot.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || &amp;lt;code&amp;gt;cc-lfs&amp;lt;/code&amp;gt; || lfs || lfs || Rebuild compiler dalam chroot LFS, dites, dan benar-benar jalan mandiri.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Stage 1: Masih di luar chroot, pakai compiler sistem.&lt;br /&gt;
*Stage 2: Masih di luar chroot, tapi kita sudah build toolchain lengkap untuk target LFS.&lt;br /&gt;
*Stage 3: Masuk ke chroot, semua build dan tes dilakukan dari dalam sistem LFS sendiri. Ini fase stabilisasi. &lt;br /&gt;
&lt;br /&gt;
== Chicken &amp;amp; Egg Paradox == &lt;br /&gt;
Compiler C (&amp;lt;code&amp;gt;gcc&amp;lt;/code&amp;gt;) perlu:&lt;br /&gt;
*&amp;lt;code&amp;gt;glibc&amp;lt;/code&amp;gt; untuk standar library&lt;br /&gt;
*Tapi &amp;lt;code&amp;gt;glibc&amp;lt;/code&amp;gt; butuh &amp;lt;code&amp;gt;libgcc&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;libstdc++&amp;lt;/code&amp;gt; juga butuh &amp;lt;code&amp;gt;glibc&amp;lt;/code&amp;gt;&lt;br /&gt;
Lalu masalahnya adalah kita butuh &amp;lt;code&amp;gt;glibc&amp;lt;/code&amp;gt; untuk &amp;lt;code&amp;gt;libgcc&amp;lt;/code&amp;gt;,&lt;br /&gt;
tapi juga butuh &amp;lt;code&amp;gt;libgcc&amp;lt;/code&amp;gt; untuk bisa compile &amp;lt;code&amp;gt;glibc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solusinya:&lt;br /&gt;
#Bangun versi terbatas &amp;lt;code&amp;gt;libgcc&amp;lt;/code&amp;gt; dulu (tanpa fitur seperti threads, EH)&lt;br /&gt;
#Pakai &amp;lt;code&amp;gt;cc1&amp;lt;/code&amp;gt; untuk compile &amp;lt;code&amp;gt;glibc&amp;lt;/code&amp;gt;&lt;br /&gt;
#Bangun &amp;lt;code&amp;gt;libstdc++&amp;lt;/code&amp;gt; pakai &amp;lt;code&amp;gt;cc1&amp;lt;/code&amp;gt;, link ke &amp;lt;code&amp;gt;libgcc&amp;lt;/code&amp;gt; yang sudah rebuild.&lt;br /&gt;
&lt;br /&gt;
= Kesimpulan =&lt;br /&gt;
Dengan pendekatan ini, kita memastikan bahwa semua tools yang digunakan dalam sistem LFS benar-benar self-contained dan tidak tergantung pada pustaka sistem host, menjamin portabilitas dan kestabilan ke depannya.&lt;/div&gt;</summary>
		<author><name>SanzSkuy</name></author>
	</entry>
</feed>