udivdi3 dan umoddi3
Ketika melakukan kompilasi kernel 2.6.20+tambalan kerrighed dengan GCC 4.3 di atas mesin AMD64 keluar pesan kesalahan seperti di bawah ini:
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
kernel/built-in.o: In function `getnstimeofday’:
(.text+0×10185): undefined reference to `__umoddi3′
kernel/built-in.o: In function `do_gettimeofday’:
(.text+0×1023a): undefined reference to `__udivdi3′
kernel/built-in.o: In function `do_gettimeofday’:
(.text+0×1025d): undefined reference to `__umoddi3′
kernel/built-in.o: In function `do_timer’:
(.text+0×10c78): undefined reference to `__udivdi3′
kernel/built-in.o: In function `do_timer’:
(.text+0×10c9b): undefined reference to `__umoddi3′
make[1]: *** [.tmp_vmlinux1] Error 1
make[1]: Leaving directory `/usr/src/linux-2.6.20′
make: *** [kernel] Error 2
Berdasarkan pencarian di mesin pencari didapatkan informasi sebagai berikut:
- Hal ini berhubungan dengan pembagian 64 bit yang tidak didukung oleh kernel Linux secara default
- udivdi3 dan umoddi3 merupakan fungsi yang dipanggil kompiler, dalam hal ini GCC 4.3, untuk melakukan operasi aritmatika 64 bit
- Fungsi -fungsi tersebut disediakan oleh libgcc.a dan secara eksplisit kita harus menyertakannya pada saat kompilasi, perlu modifikasi Makefile atau kode sumbernya?
- Kata Stephen Hemminger, kernel Linux sudah punya beberapa implementasi dan penggunaan pembagian 64 bit, tapi tidak tahu kenapa masih muncul kesalahan? /me masih bodo.
Beruntung saya ketemu pranala ini di antara banyak hasil pencarian. Kernel coba dikompilasi ulangi dengan GCC 4.2 dan berhasil :D *cara cepat*

