C编译器困惑

标签 c gcc compilation

好吧,我在操作系统上,使用终端来编译我的 C 代码。每当我使用 nano 或 vim 创建一个名为“tst.c”(或任何名称)的文件时,我都会使用(我的老师告诉我每次都使用它,所以我不认为这是问题:

gcc -Wall -std=c99 -o tst.c ./tst.c

然后我猜它会变成二进制。但是当我尝试再次编辑它时,我猜它有所有这些奇怪的加密:

��������H���__PAGEZERO��������������������������������������������������������ÿ��__TEXT����������������������������������������������������__text����������__TEXT����������`�����*�������`���������������Ä������������__stubs���������__TEXT����������ä������������ä��������������Ä�����������__stub_helper���__TEXT����������ê������������ê���������������Ä������������__cstring�������

所以,问题是,如何恢复以便我可以编辑而不是每次都创建新文件??????

最佳答案

由于 -o 选项,您将使用已编译的可执行文件覆盖原始源文件:

gcc -Wall -std=c99 -o tst.c ./tst.c
                   ^^^^^^^^ 

您需要在 -o 选项中指定不同的输出文件名:

gcc -Wall -std=c99 -o tst tst.c

否则,您可以完全关闭 -o 选项,编译后的可执行文件将写入名为 a.out 的文件。

最终,您会希望使用 make 自动执行所有这些操作。实用程序,但现在只需了解 -o 选项的工作原理即可。

关于C编译器困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43054601/

相关文章:

multithreading - 有多线程跟踪JIT编译器的示例吗?

c - 用于检测两个后/前增量运算符的静态分析器

C++计算行主和列主访问时间

python - 集合协调算法的实现

c - 将服务器的输出重定向到客户端套接字

GWT 编译 - 为什么只有一个 user.agent 选项后仍然有 5 个排列?

c - 在 C (Linux) 中重定向标准输入和输出

c++ - 查找一个数字是否是其他数字的公倍数

c++ - gcc - 将多个 c 文件链接到一个 c++ 文件

c - 在 C 中使用影子支持