Я использую Ubuntu 16.04, в котором по умолчанию gcc-5
. У меня также есть gcc-4.6
согласно требованиям моего проекта. Я хочу скомпилировать драйвер устройства Linux в своей системе, используя gcc-4.6
. Первоначально я использовал команду sudo update-alternatives --config gcc
и менял системную gcc
версию с gcc-5
на gcc-4.6
и запускал make
для компиляции конкретного драйвера. Теперь в соответствии с требованиями моего проекта без использования команды sudo update-alternatives --config gcc
мне нужно использовать gcc-4.6
для компиляции драйвера. Любые предложения по эффективному достижению этого? Makefile , который я использовал для компиляции:
-include rules.mk
KO_NAME=usart_driver
obj-m := $(KO_NAME).o
SRCS += usart_drv.c
$(KO_NAME)-objs = $(SRCS:.c=.o)
PWD=$(shell pwd)
default:
ifndef KERNELDIR
@echo "Path to Kernel sources not set. Please set KERNELDIR as part of invoking make"
else
$(AT)$(MAKE) -C $(KERNELDIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=$(PWD) modules
endif
.PHONY: clean
clean:
$(AT)rm -f $($(KO_NAME)-objs) $(obj-m) $(KO_NAME).mod.o $(KO_NAME).mod.c Module.symvers $(LOGFILE) $(AT)rm -f $(KO_NAME).ko
@$(ECHO) "clean done"
и rules.mk файл:
COMPILER=gcc
INCDIR=
CROSS_COMPILE=
export ARCH=x86
KERNELDIR=/KernalSource/x86/linux-2.6.25/
In rules .mk , если я использовал COMPILER=/usr/bin/gcc-4.6
вместо COMPILER=gcc
, тогда он также принимает gcc
, т.е. gcc-5
по умолчанию.