Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.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
linux/unix和makefiles_Linux_Unix_Makefile_Compilation_Conditional Compilation - Fatal编程技术网

linux/unix和makefiles

linux/unix和makefiles,linux,unix,makefile,compilation,conditional-compilation,Linux,Unix,Makefile,Compilation,Conditional Compilation,在linux make文件中: 我只想在编译成功的情况下运行输出程序 有办法做到这一点吗?如果生成的可执行文件名为a.out,则可以执行以下操作: % make && ./a.out 我能想到的最简单的方法就是这样 run: program_name ./program_name 如果程序名不存在且无法编译,“make run”应该失败。成功时返回0,编译失败时返回2。我用bash尝试了以下内容 make && ./success 其中su

在linux make文件中:
我只想在编译成功的情况下运行输出程序


有办法做到这一点吗?

如果生成的可执行文件名为
a.out
,则可以执行以下操作:

% make && ./a.out

我能想到的最简单的方法就是这样

run: program_name
        ./program_name

如果程序名不存在且无法编译,“make run”应该失败。

成功时返回0,编译失败时返回2。我用bash尝试了以下内容

make && ./success
其中success是生成的二进制文件的名称。

&&保证只有在第一个程序成功运行时,第二个程序才会执行。

正如其他人所说,使用
&
。例如:

$ make && ./a.out
有两件事使这项工作成功;首先,UNIX中有一个约定,所有成功的东西都返回0(包括C程序)。有一个古老的笑话可以帮助你记住“罗马帝国的衰落是因为罗马人没有一个零来成功终止他们的C程序”

其次,
&&
是布尔“and”的“短路”版本。也就是说,它将计算左侧的表达式,并且只有当该表达式为
0
时,它才会计算右侧的表达式。这也是Java运算符
&
(短路)和
&
(始终计算两个操作数)之间的区别。许多命令式语言都包含这两种运算符,以防布尔表达式的右侧操作数中存在副作用(如I/O、变量更新),在这种情况下,您肯定要计算这两种操作数。然而,有些人会说,以这种方式嵌入副作用是不好的