KastnerRG / riffa

The RIFFA development repository
https://riffa.ucsd.edu
Other
766 stars 313 forks source link

Ubuntu 18.04 failed to compile #53

Closed ghost closed 3 years ago

ghost commented 3 years ago

uname -a Linux m4800 5.4.0-65-generic #73~18.04.1-Ubuntu SMP Tue Jan 19 09:02:24 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

sudo make setup if [ -f "/etc/redhat-release" ]; then yum install kernel-devel-uname -r;\ else apt-get install linux-headers-uname -r; fi Reading package lists... Done Building dependency tree
Reading state information... Done linux-headers-5.4.0-65-generic is already the newest version (5.4.0-65.73~18.04.1). The following packages were automatically installed and are no longer required: amd64-microcode intel-microcode iucode-tool libssl1.1:i386 linux-image-generic-hwe-18.04 thermald Use 'sudo apt autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

sudo make Compiling driver for kernel: 5.4.0-65-generic with the following values NAME: 'riffa' MAJNUM: '100' VENDOR_ID0: '10EE' VENDOR_ID1: '1172'

sed -i 's/#define MAJOR_NUM [^\n]/#define MAJOR_NUM 100/g' riffa_driver.h sed -i 's/#define DEVICE_NAME [^\n]/#define DEVICE_NAME "riffa"/g' riffa_driver.h sed -i 's/#define VENDOR_ID0 [^\n]/#define VENDOR_ID0 0x10EE/g' riffa_driver.h sed -i 's/#define VENDOR_ID1 [^\n]/#define VENDOR_ID1 0x1172/g' riffa_driver.h sed -i 's/#define DEBUG [^\n]/#define DBUG 1/g' riffa_driver.h sed -i 's/#define DBUG [^\n]/#define DBUG 1/g' riffa_driver.h make -C /lib/modules/uname -r/build SUBDIRS=pwd modules make[1]: Entering directory '/usr/src/linux-headers-5.4.0-65-generic' make[2]: No rule to make target 'arch/x86/tools/relocs_32.c', needed by 'arch/x86/tools/relocs_32.o'. Stop. arch/x86/Makefile:232: recipe for target 'archscripts' failed make[1]: [archscripts] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-5.4.0-65-generic' Makefile:94: recipe for target 'riffa.ko' failed make: *** [riffa.ko] Error 2

What I'm doing wrong?

ghost commented 3 years ago

gcc --version gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

ghost commented 3 years ago

I found solution. Change this line: make -C $(KDIR) SUBDIRS=pwd modules to this: make -C $(KDIR) M=$(shell pwd) modules

ghost commented 3 years ago

master@m4800:~/Downloads/riffa-master/driver/linux$ make debug Compiling driver for kernel: 5.4.0-65-generic with the following values NAME: 'riffa' MAJNUM: '100' VENDOR_ID0: '10EE' VENDOR_ID1: '1172'

sed -i 's/#define MAJOR_NUM [^\n]/#define MAJOR_NUM 100/g' riffa_driver.h sed -i 's/#define DEVICE_NAME [^\n]/#define DEVICE_NAME "riffa"/g' riffa_driver.h sed -i 's/#define VENDOR_ID0 [^\n]/#define VENDOR_ID0 0x10EE/g' riffa_driver.h sed -i 's/#define VENDOR_ID1 [^\n]/#define VENDOR_ID1 0x1172/g' riffa_driver.h sed -i 's/#define DEBUG [^\n]/#define DBUG 1/g' riffa_driver.h sed -i 's/#define DBUG [^\n]/#define DEBUG 1/g' riffa_driver.h make -C /lib/modules/uname -r/build M=/home/master/Downloads/riffa-master/driver/linux modules make[1]: Entering directory '/usr/src/linux-headers-5.4.0-65-generic' CC [M] /home/master/Downloads/riffa-master/driver/linux/riffa_driver.o CC [M] /home/master/Downloads/riffa-master/driver/linux/circ_queue.o LD [M] /home/master/Downloads/riffa-master/driver/linux/riffa.o /bin/sh: 1: cannot create /home/master/Downloads/riffa-master/driver/linux/riffa.mod: Permission denied Building modules, stage 2. MODPOST 1 modules CC [M] /home/master/Downloads/riffa-master/driver/linux/riffa.mod.o LD [M] /home/master/Downloads/riffa-master/driver/linux/riffa.ko make[1]: Leaving directory '/usr/src/linux-headers-5.4.0-65-generic' rm -rf riffa.o cc -DDEBUG -g -g -Wall -fPIC -c riffa.c cc -DDEBUG -g -shared -Wl,-soname,libriffa.so.1 -o libriffa.so.1.0 riffa.o

ghost commented 3 years ago

master@m4800:~/Downloads/riffa-master/driver/linux$ sudo make install cc -shared -Wl,-soname,libriffa.so.1 -o libriffa.so.1.0 riffa.o mkdir -p /lib/modules/5.4.0-65-generic/kernel/drivers/riffa cp riffa.ko /lib/modules/5.4.0-65-generic/kernel/drivers/riffa/ if [ -f "/etc/redhat-release" ]; then\ printf "%b\n" "#!/bin/sh\nexec /sbin/modprobe riffa >/dev/null 2>&1" > /etc/sysconfig/modules/riffa.modules;\ chmod 755 /etc/sysconfig/modules/riffa.modules;\ else\ if ! grep -Fxq "riffa" /etc/modules; then echo "riffa" >> /etc/modules; fi;\ fi printf "%b\n" "KERNEL==\"riffa\", MODE=\"777\", GROUP=\"root\"" > /etc/udev/rules.d/99-riffa.rules printf "/usr/local/lib\n" > riffa.conf mv riffa.conf /etc/ld.so.conf.d/ cp riffa_driver.h /usr/local/include/ cp riffa.h /usr/local/include/ mv libriffa.so.1.0 /usr/local/lib ln -sf /usr/local/lib/libriffa.so.1.0 /usr/local/lib/libriffa.so.1 ln -sf /usr/local/lib/libriffa.so.1.0 /usr/local/lib/libriffa.so ldconfig depmod