Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为C代码创建makefile,运行时不使用/_C_Unix_Makefile - Fatal编程技术网

为C代码创建makefile,运行时不使用/

为C代码创建makefile,运行时不使用/,c,unix,makefile,C,Unix,Makefile,我需要创建一个makefile,将我的simpleprogram.c编译成sp,它可以像unix命令一样调用,如ls,ps等,而无需显式编写/sp。我在网上找不到解决方案,也找不到错误的方法。我不能像“executable without./”那样搜索,因为我不知道这叫什么=>“/”将二进制文件放在路径中的目录中 您只需执行以下操作: export PATH=$PATH:. 但总的来说,这不是一个好主意。只需将程序复制到系统bin(可执行二进制文件)目录 最常见的是它的/usr/bin用于所有

我需要创建一个makefile,将我的
simpleprogram.c
编译成
sp
,它可以像unix命令一样调用,如
ls
ps
等,而无需显式编写
/sp
。我在网上找不到解决方案,也找不到错误的方法。我不能像“executable without./”那样搜索,因为我不知道这叫什么=>“
/

将二进制文件放在
路径中的目录中

您只需执行以下操作:

export PATH=$PATH:.

但总的来说,这不是一个好主意。

只需将程序复制到系统bin(可执行二进制文件)目录

最常见的是它的
/usr/bin
用于所有用户都可以使用的程序

如果该应用程序仅适用于管理员,则应使用
/usr/sbin/
目录


记住用chmod设置“executable”标志:
chmod+x您的应用程序

正确的解决方案(假设您不希望从生成文件外部运行
sp
)是使用完整路径名而不是
//code>调用您的程序(这是相对的,在多目录生成过程中可以更改)。在生成文件中执行以下操作:

SP_DIR := $(shell pwd)/spdir

rule : somedependency
    $(SP_DIR)/sp
其中
$(shell pwd)
将扩展到运行makefile的目录。如果sp目录位于该目录的父目录中,则可以在路径中使用
:例如

SP_DIR := $(shell pwd)/../../spdir
如果确实要从makefile外部运行sp,则需要将sp复制到PATH变量中指定的目录(do
echo$PATH
以查看这些文件),或者修改.bashrc或等效文件以使PATH包含sp内置的目录


John

但是当我和它在同一个目录下时,它不应该工作吗?不,如果你在同一个目录下,只有
/sp
才有效。关于那些没有研究历史的人注定要重复错误的话,那是什么引语?@aselr ps是一个例子,来自unix命令,它显示进程。sp是我想要的东西,使simpleprgram.c编译为sp,只需在该文件夹中键入sp即可使用。
称为当前目录或工作目录或当前工作目录,这也是像
cwd
(在FTP中)和
pwd
(在shell上)这样的命令背后的原因.正如你所说,这不是一个好主意。事实上,我认为这是一个非常糟糕的主意。:)