卸载用make编译的程序

卸载用make编译的程序

我想了解一些事情制作命令,即使我读过手册,我仍然对它的用法有些怀疑。特别是,如果我使用终端上的“经典”命令序列安装程序(由许多包组成),即:

./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

相关内容