holdtheline Asked: 2020-11-28 07:44:12 +0800 CST2020-11-28 07:44:12 +0800 CST 2020-11-28 07:44:12 +0800 CST 用 make 编译的卸载程序 772 我正在尝试了解有关make命令的一些内容,即使我已经阅读了手册,我仍然对它的用法有一些疑问。特别是,如果我在终端上使用“经典”命令序列安装程序(由许多包组成),即: ./configure -prefix /usr/bin/my_program (这里指的是一些软件通常提供的配置文件) 制作 须藤使安装 卸载该程序的逆操作是什么?删除之前选择的整个目录就足够了吗?(例如使用 sudo rm -r /usr/bin/my_program)。 感谢任何好心的人向我解释 make configure 2 个回答 Voted user535733 2020-11-28T08:03:02+08:002020-11-28T08:03:02+08:00 阅读 makefile 以获得答案。 make很棒,但它并不神奇。make应用程序只能做它被指示做的事情(就像任何应用程序一样)。这些说明在 makefile 中。 如果 makefile 中有“安装”说明,sudo make install则将起作用,否则将失败。 同样,make需要“卸载”说明sudo make uninstall才能工作。 Best Answer heynnema 2020-11-28T11:10:40+08:002020-11-28T11:10:40+08:00 对于任何 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
阅读 makefile 以获得答案。
make
很棒,但它并不神奇。make
应用程序只能做它被指示做的事情(就像任何应用程序一样)。这些说明在 makefile 中。如果 makefile 中有“安装”说明,
sudo make install
则将起作用,否则将失败。同样,
make
需要“卸载”说明sudo make uninstall
才能工作。对于任何 Makefile,执行
cat Makefile
并查看列表的最后。在那里你会发现哪些选项make
可以理解(对于那个特定的 Makefile)。看下面的代码片段......并寻找“option:”......在这个例子中,我们可以看到“all:”和“modules:”等等......一直到“uninstall:” ... 甚至在那之后还有更多。
这通常意味着(在本例中),按照您的初始
make
命令,sudo make install
构建和安装代码,您可以使用sudo make uninstall
删除已安装的代码。