![卸载用make编译的程序](https://linux22.com/image/1020846/%E5%8D%B8%E8%BD%BD%E7%94%A8make%E7%BC%96%E8%AF%91%E7%9A%84%E7%A8%8B%E5%BA%8F.png)
我想了解一些事情制作命令,即使我读过手册,我仍然对它的用法有些怀疑。特别是,如果我使用终端上的“经典”命令序列安装程序(由许多包组成),即:
./configure -prefix /usr/bin/my_program (这里我指的是一些软件通常会提供的配置文件)
制作
安装
卸载该程序的逆操作是什么?删除之前选择的整个目录就够了吗?(例如使用 sudo rm -r /usr/bin/my_program)。
感谢任何好心人向我解释
答案1
阅读 makefile 来寻找答案。
make
很棒,但并不神奇。make
应用程序只能执行指示的操作(就像任何应用程序一样)。这些指令在 makefile 中。
如果 makefile 中有“安装”指令,那么sudo make install
将会起作用,否则将会失败。
同样,make
需要“卸载”指令才能sudo make uninstall
工作。
答案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