c++ - 为什么我不能运行目标文件?

标签 c++ c gcc

当我想运行源代码时为什么会这样:

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/

相关文章:

c++ - 我的带内存的动态编程算法有什么问题?

c++ - Matlab Coder 与手动编码?

c++ - 在 MSVC 2010 上 boost STATIC_ASSERT

c++ - 指针声明

python - 测试可转换字符的 wchar_t*

CS50 维吉内尔问题。越界访问、未定义的行为

c - 是什么阻止了将函数参数用作隐藏指针?

c - 打开CV : I need to get coordinate whan I click

c++ - 关于 ADC,-1 (0xFFFFFFFF) 有什么特别之处吗?

c++ - 用 C/C++ 编译 DLL,然后从另一个程序调用它