Я пытаюсь понять кое-что о команде make , и даже если я прочитал руководство, у меня все еще есть сомнения по поводу его использования. В частности, если я устанавливаю программу (состоящую из множества пакетов) с использованием «классической» последовательности команд на терминале, то есть:
./ configure -prefix / usr / bin / my_program (здесь я имею в виду файл конфигурации, обычно поставляемый с некоторыми программами)
make
sudo make install
что это за обратная операция для удаления этой программы? Достаточно стереть всю директорию, которую выбрали раньше? (например, с помощью sudo rm -r /usr/bin/my_program).
Спасибо всем, кто так любезно объяснил мне это
Для ЛЮБОГО 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
Прочтите make-файл для ответов.
make
отлично, но это не волшебно. Приложение make
может делать только то, что ему предписано (как и любое приложение). Эти инструкции находятся в make-файле.
Если в make-файле есть инструкции по установке, то sudo make install
будет работать, в противном случае произойдет сбой.
Аналогично, make
нуждается в инструкциях по удалению, чтобы sudo make uninstall
работал.