Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Уменьшение буфферов действительно помогло. Все модули успешно скомпилировались. Буду копать файл моего модуля на предмет функций put/get_array.
Благодарю за помощь, а также отдельно за разъяснение, почему так происходит.
Изначально вообще никаких опций задано не было. Но и с C90 имеем тоже самое. Получившийся Makefile.
OPENWRT = ${HOME}/OpenWRT/openwrt1505
KERNEL = ${OPENWRT}/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7628/linux-3.18.29
LD=${OPENWRT}/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-uclibc-ld
CROSS_COMPILE="mipsel-openwrt-linux-uclibc-"
KBUILD_HAVE_NLS=no
CONFIG_SHELL="/bin/bash"
DEBUG=y
# To build modules outside of the kernel tree, we run "make"
# in the kernel source tree; the Makefile these then includes this
# Makefile once again.
# This conditional selects whether we are being included from the
# kernel Makefile or not.
ifeq ($(DEBUG),y)
DEBFLAGS = -O -g -fno-builtin-memcpy -DLCARD_DEBUG
else
DEBFLAGS = -O2
endif
EXTRA_CFLAGS+= $(DEBFLAGS)
ifeq ($(KERNELRELEASE),)
# Assume the source tree is where the running kernel was built
# You should set KERNELDIR in the environment if it's elsewhere
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
# The current directory is passed to sub-makes as argument
PWD := $(shell pwd)
modules:
#
# Make здесь
#
make -C ${KERNEL} ARCH="mips" CC="${OPENWRT}/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-uclibc-gcc -std=c90" M=$(PWD) modules
#
#
#
#$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
#modules_install:
# $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
cln:
rm -rf *.o *~ core .depend .*.cmd *.mod.c .tmp_versions
.PHONY: modules modules_install clean
else
ldevusb-objs = e2010.o e140.o e440.o e154.o ldevusbu.o
ldevpci-objs = l760.o ldevpciu.o
ldevpcibm-objs = l791.o ldevpcib.o
# called from kernel build system: just declare what our modules are
obj-m += ldevice.o
obj-m += ldevpci.o
obj-m += ldevusb.o
obj-m += ldevpcibm.o
endif
Добрый день.
Драйверы Lcomp для Linux под Ubuntu скомпилировались без проблем, но при попытке компиляции под OpenWrt вылезают ошибки:
/home/iham/OpenWRT/L-card/ldevpciu.c: In function 'ldevpci_ioctl':
/home/iham/OpenWRT/L-card/ldevpciu.c:406:7: error: case label does not reduce to an integer constant
case DIOC_GET_PARAMS:
/home/iham/OpenWRT/L-card/ldevpciu.c:413:7: error: case label does not reduce to an integer constant
case DIOC_READ_FLASH_WORD:
/home/iham/OpenWRT/L-card/ldevpciu.c:421:7: error: case label does not reduce to an integer constant
case DIOC_WRITE_FLASH_WORD:
и т.д.
Я так понимаю компилятору не нравится, что в case стоит НЕ integer constant. Декларация макросов в ioctl.h выглядит так:
#define DIOC_GET_PARAMS _IOWR(0x97, 23, IOCTL_BUFFER)
#define DIOC_READ_FLASH_WORD _IOWR(0x97, 27, IOCTL_BUFFER)
#define DIOC_WRITE_FLASH_WORD _IOWR(0x97, 28, IOCTL_BUFFER)
Можно, конечно, переписать весь код в if-else, но может быть существует способ обойтись малой кровью?
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск