我有一个生成可执行文件“submission”的makefile,我想通过键入“submission [arguments]”而不是“./submission [arguments]”来运行该文件,如果可能的话我该怎么做?
CXX = g++
CXXFLAGS= -g -std=c++11 -Wall -pedantic
CODE_SRC = code.cpp
CODE_OBJ = code.o
code: $(CODE_OBJ)
$(CXX) -o submission $(CXXFLAGS) $(CODE_OBJ) -lm
@echo "-----------DONE -------------"
.cc.o:
$(CC) $(CFLAGS) -c $*.cpp
clean:
rm -f *.o submission
clobber:
rm -f *.o
最佳答案
这与 Makefile
无关,但与您的 shell 如何确定您可能想要运行的程序有关。当您运行像 ls
这样的命令时,shell 通过 PATH
环境变量知道该程序的位置。
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
因此在这种情况下,我的 ls
程序必须位于以下目录之一:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
如果它不在这些目录之一中,我将不得不执行您所做的操作并指定它的路径。
就我而言:
$ /bin/ls
就您而言,您的程序不在您的 PATH
中,因此您需要指定它的位置,即您的当前目录(这就是 ./
的含义)。
如果您想在不指定路径的情况下运行此程序,则需要将程序放置在 PATH
中的目录中。通常,您可能不想将随机可执行文件放入默认目录之一。相反,您可以将新目录添加到PATH
。
在您的 ~/.bashrc
或 ~/.bash_profile
中,添加以下行:
export PATH="~/bin:$PATH"
您可以将 ~/bin
替换为您想要的任何路径,但我通常喜欢为自己的可执行文件提供一个位置。然后,您需要将可执行文件放入该目录中(如果它与现有目录不同)。您需要重新打开终端才能更新 PATH
。之后,您应该能够按预期运行您的程序。
有趣的事实:将 ./
添加到 PATH
将使您可以在当前所在的目录中运行可执行文件,而无需其路径!
关于linux - 使用makefile执行程序时是否可以删除 "./"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57927039/