программу удаления, скомпилированную с помощью make

Я пытаюсь понять кое-что о команде make , и даже если я прочитал руководство, у меня все еще есть сомнения по поводу его использования. В частности, если я устанавливаю программу (состоящую из множества пакетов) с использованием «классической» последовательности команд на терминале, то есть:

./ configure -prefix / usr / bin / my_program (здесь я имею в виду файл конфигурации, обычно поставляемый с некоторыми программами)

make

sudo make install

что это за обратная операция для удаления этой программы? Достаточно стереть всю директорию, которую выбрали раньше? (например, с помощью sudo rm -r /usr/bin/my_program).

Спасибо всем, кто так любезно объяснил мне это

1
задан 27 November 2020 в 22:25

2 ответа

Для ЛЮБОГО Makefile создайте cat Makefile и посмотрите в самый конец списка. Там вы найдете, какие опции make поймут (для этого конкретного Makefile).

Посмотрите на следующий фрагмент кода ... и найдите "option:" ... и в этом примере мы можем видеть «all:» и «modules:» и т.д ... вплоть до «uninstall:» ... и даже еще несколько после этого.

Обычно это означает (в данном примере), после начальной команды make и sudo make install для сборки и установки кода вы можете использовать sudo make uninstall для удаления установленного кода.

all: modules

modules:
    $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd)  modules
    @echo "---------------------------------------------------------------------------"
    @echo "Visit https://github.com/aircrack-ng/rtl8812au for support/reporting issues"
    @echo "or check for newer versions (branches) of these drivers.                   "
    @echo "---------------------------------------------------------------------------"
strip:
    $(CROSS_COMPILE)strip $(MODULE_NAME).ko --strip-unneeded

install:
    install -p -m 644 $(MODULE_NAME).ko  $(MODDESTDIR)
    /sbin/depmod -a ${KVER}

uninstall:
    rm -f $(MODDESTDIR)/$(MODULE_NAME).ko
    /sbin/depmod -a ${KVER}

backup_rtlwifi:
    @echo "Making backup rtlwifi drivers"
ifneq (,$(wildcard $(STAGINGMODDIR)/rtl*))
    @tar cPf $(wildcard $(STAGINGMODDIR))/backup_rtlwifi_driver.tar $(wildcard $(STAGINGMODDIR)/rtl*)
    @rm -rf $(wildcard $(STAGINGMODDIR)/rtl*)
endif
ifneq (,$(wildcard $(MODDESTDIR)realtek))
    @tar cPf $(MODDESTDIR)backup_rtlwifi_driver.tar $(MODDESTDIR)realtek
    @rm -fr $(MODDESTDIR)realtek
endif
ifneq (,$(wildcard $(MODDESTDIR)rtl*))
    @tar cPf $(MODDESTDIR)../backup_rtlwifi_driver.tar $(wildcard $(MODDESTDIR)rtl*)
    @rm -fr $(wildcard $(MODDESTDIR)rtl*)
endif
    @/sbin/depmod -a ${KVER}
    @echo "Please reboot your system"

restore_rtlwifi:
    @echo "Restoring backups"
ifneq (,$(wildcard $(STAGINGMODDIR)/backup_rtlwifi_driver.tar))
    @tar xPf $(STAGINGMODDIR)/backup_rtlwifi_driver.tar
    @rm $(STAGINGMODDIR)/backup_rtlwifi_driver.tar
endif
ifneq (,$(wildcard $(MODDESTDIR)backup_rtlwifi_driver.tar))
    @tar xPf $(MODDESTDIR)backup_rtlwifi_driver.tar
    @rm $(MODDESTDIR)backup_rtlwifi_driver.tar
endif
ifneq (,$(wildcard $(MODDESTDIR)../backup_rtlwifi_driver.tar))
    @tar xPf $(MODDESTDIR)../backup_rtlwifi_driver.tar
    @rm $(MODDESTDIR)../backup_rtlwifi_driver.tar
endif
    @/sbin/depmod -a ${KVER}
    @echo "Please reboot your system"

config_r:
    @echo "make config"
    /bin/bash script/Configure script/config.in

DRIVER_VERSION = $(shell grep "\#define DRIVERVERSION" include/rtw_version.h | awk '{print $$3}' | tr -d v\")

dkms_install:
    mkdir -p /usr/src/8812au-$(DRIVER_VERSION)
    cp -r * /usr/src/8812au-$(DRIVER_VERSION)
    dkms add -m 8812au -v $(DRIVER_VERSION)
    dkms build -m 8812au -v $(DRIVER_VERSION)
    dkms install -m 8812au -v $(DRIVER_VERSION)
    dkms status

dkms_remove:
    dkms remove 8812au/$(DRIVER_VERSION) --all
    rm -rf /usr/src/8812au-$(DRIVER_VERSION)

.PHONY: modules clean

clean:
    #$(MAKE) -C $(KSRC) M=$(shell pwd) clean
    cd hal ; rm -fr */*/*/*.mod.c */*/*/*.mod */*/*/*.o */*/*/.*.cmd */*/*/*.ko
    cd hal ; rm -fr */*/*.mod.c */*/*.mod */*/*.o */*/.*.cmd */*/*.ko
    cd hal ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
    cd hal ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
    cd core ; rm -fr */*.mod.c */*.mod */*.o */.*.cmd */*.ko
    cd core ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
    cd os_dep/linux ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko *.o.d
    cd os_dep ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
    cd platform ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko
    rm -fr Module.symvers ; rm -fr Module.markers ; rm -fr modules.order
    rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~
    rm -fr .tmp_versions
endif
1
ответ дан 3 January 2021 в 22:48

Прочтите make-файл для ответов.

make отлично, но это не волшебно. Приложение make может делать только то, что ему предписано (как и любое приложение). Эти инструкции находятся в make-файле.

Если в make-файле есть инструкции по установке, то sudo make install будет работать, в противном случае произойдет сбой.

Аналогично, make нуждается в инструкциях по удалению, чтобы sudo make uninstall работал.

3
ответ дан 3 January 2021 в 22:48

Другие вопросы по тегам:

Похожие вопросы: