Как использовать другую версию g cc, отличную от версии G CC по умолчанию, без использования команды «update-alternatives --config g cc» для компиляции драйверов устройств - PullRequest
0 голосов
/ 04 августа 2020

Я использую 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 по умолчанию.

...