为什么gcc-o new 加文件1然后./new可以输出程序结果
但是直接gcc 加文件1 然后 . /文件1没有权限
在第一部分,细述了gcc将.c文件转化成可执行程序的整个过程,但在实际使用过程当中不必如此麻烦。只需要一条指令即可:
[xxp@VM-24-3-centos lesson1]$ gcc test.c -o test
[xxp@VM-24-3-centos lesson1]$ ls
install.sh test test.c
[xxp@VM-24-3-centos lesson1]$ ./test
hello world
参考的gpt
在Linux系统中,编译生成的可执行文件默认情况下是没有执行权限的,需要通过 chmod 命令赋予执行权限才能运行。
当使用 gcc -o new 文件1 命令时,-o 参数指定生成的可执行文件名为 new,编译生成的可执行文件会被赋予默认的执行权限。
而当直接使用 gcc 文件1 命令时,生成的可执行文件默认名称为 a.out,且没有执行权限。此时如果想要运行可执行文件,需要先使用 chmod +x 文件1 命令赋予执行权限,再通过 ./文件1 命令来运行。
因此,如果直接使用 gcc 文件1 命令编译生成的可执行文件没有执行权限,需要手动使用 chmod +x 命令赋予执行权限后才能运行。
参考GPT和自己的思路:
这是因为在使用gcc编译时,如果没有使用-o标志指定输出文件名,则默认输出文件名为a.out。而当使用-o指定输出文件名时,输出文件名为指定的文件名。因此,例如当使用命令"gcc -o new file1.c"编译时,编译器将生成一个可执行文件new,因此可以使用"./new"来运行程序。而如果直接使用"gcc file1.c"编译,则会生成一个名为a.out的文件,因此需要使用"./a.out"来运行程序。此外,如果直接使用"./file1"来运行程序,需要确保该文件的执行权限已被正确设置。