Ahududu pi üzerinde bir çekirdek modül (kendim yazdım) derlemeye çalışıyorum. Hedef ortamda derliyorum. Ben modül eklemek çalışırsanız, ben olsun, yeterÇekirdek modülünü derlerken undefined "__aeabi_ldivmod"
make -C /lib/modules/3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708/build M=/home/harmic/horus/ppminput modules
make[1]: Entering directory `/usr/src/kernels/3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708'
CC [M] /home/harmic/horus/ppminput/ppminput.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: "__aeabi_ldivmod" [/home/harmic/horus/ppminput/ppminput.ko] undefined!
CC /home/harmic/horus/ppminput/ppminput.mod.o
LD [M] /home/harmic/horus/ppminput/ppminput.ko
make[1]: Leaving directory `/usr/src/kernels/3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708'
Emin:
aşağıdaki çıktıyı almak
Sep 2 22:44:26 pidora kernel: [ 7589.354709] ppminput: Unknown symbol __aeabi_ldivmod (err 0)
yılında:
insmod: ERROR: could not insert module ./ppminput.ko: Unknown symbol in module
ve syslog
modülüm, soruna neden olan satırı belirledim:(burada tdiff bir s64 ve CHAN_SCALE bir tam sayıdır).
Bölünme hakkında yorum yaparsam sorun gider. Bu, modülümdeki bölümü kullanan tek hattır.
Biraz sorun, bu konuyla ilgili birkaç referansa dönüştü, ancak hiçbiri çekirdek modülleri derleme bağlamında bulamadım.
Benim makefile şöyle görünür:
obj-m += ppminput.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Çevre Ayrıntıları: Pi Pidora 2014 (Fedora 20) çalıştıran
- .
- Çekirdek 3.12.23-1.20140626git25673c3.rpfr20.armv6hl.bcm2708'dir.
- gcc, 4.8.2'dir.
Güncelleme
Açıkçası doğru terimler kullanarak arama vermedi. Another search, birçok referansı satın aldı ancak böyle bir çözüm bulunamadı. Bunları okumak, biri ARM için derlemek istiyorsa, çekirdeğin 64bit bölümleri yapmaması gerektiği fikrini alıyorum.
HI! Ve modulo nasıl yapılır? – flav
@flav Bir soru sormak için "Soru Sor" düğmesini kullanın. Ya da ilk önce [belgeleri] (http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/asm-generic/div64.h) okuyun. –