当我想运行源代码时为什么会这样:
gcc test.c -o test.o
然后
./test.o
但这不起作用:
gcc -c test.c
然后
./test.o
并得到这个消息
bash: ./test.o: Permission denied
最佳答案
首先,您创建的不是目标文件,而是可执行 文件。目标文件是用作链接器创建可执行文件的输入文件的中间文件。你用 .o
后缀命名它并不重要。
其次,根据传统,如果您不使用 -o
选项指定输出文件名,编译器前端程序和链接器将创建一个名为 a.out
的可执行文件。
但这还不是全部,因为对于第二个示例,您实际上是在创建一个真实的目标文件,而这些文件是不可执行的。如上所述,这些需要传递到单独的链接步骤以创建可执行文件。
您要么需要创建一个可执行文件:
gcc test.c
./a.out
或者您应该将目标文件链接到可执行文件中:
gcc -c test.c # Create object file
gcc test.o -o test # Use object file to create executable file
./test # Run the executable file
关于c++ - 为什么我不能运行目标文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39566052/