ubuntu 中的 gcc 编译器

ubuntu 中的 gcc 编译器

我创建了一个简单的 C 程序,它打印“Hello world”作为输出并将其保存为test.c

在终端中将其编译gcc -o test test.c并运行,./test但没有显示输出。

如果将相同的程序保存为try.c任何程序(但不是测试程序),它可以完美编译和运行。

为什么?编译后的 C 二进制文件的名称有问题吗test

答案1

有一个名为 test 的 bash 程序,运行时如果没有参数它什么也不做(在终端中快速进行 man test 以了解更多信息)。这就是重命名起作用的原因 :)

很多人不知道“测试”也是一个程序,最好不要将脚本等命名为“测试”

答案2

有一个名为的 shell 程序test用于测试条件,这就是您无法运行二进制文件的原因。它是 POSIX 指定的内置 shell,也存在于许多其他 shell 中,例如ksh(Korn shell)和ash(Almquist shell)。Bash 本身(大部分)符合 POSIX 规范。该test实用程序用于检查文件的各种属性或各种字符串和数字测试。示例:

test -e FILE  # if the file exists in some form
test -f FILE  # if the file exists as a regular file (not a directory, symlink, etc.)

test -n "$str"  # if the string has a length greater than 0
test -z "$str"  # if the string is an empty string

test "$str" = "foo"  # equivalent to `str == "foo"` in C

test $num -lt 10  # if the number is less than 10
test $num -ge 10  # if the number is greater than or equal to 10
test $num -eq 10  # if the number equals 10

长话短说,重命名您的程序而不是尝试运行文件可能对您最有利,因为 Bash 甚至拒绝承认存在的可能性。;-)

相关内容