当前位置: 首页 > 编程笔记 >

gcc“你好,世界!” 具有常见的命令行选项

王轶
2023-03-14
本文向大家介绍gcc“你好,世界!” 具有常见的命令行选项,包括了gcc“你好,世界!” 具有常见的命令行选项的使用技巧和注意事项,需要的朋友参考一下

示例

对于具有单个源文件的程序,使用gcc很简单。

/* File name is hello_world.c */
#include <stdio.h>

int main(void){
    int i;
    printf("Hello world!\n");
}

要从命令行编译文件hello_world.c:

gcc hello_world.c

然后gcc将编译程序并将可执行文件输出到文件a.out。如果要命名可执行文件,请使用-o选项。

gcc hello_world.c -o hello_world

可执行文件将被命名为hello_world而不是a.out。默认情况下,gcc不会发出太多警告。gcc有许多警告选项,建议您仔细阅读gcc文档以了解可用的内容。使用“ -Wall”是一个很好的起点,涵盖了许多常见问题。

gcc -Wall hello_world.c -o hello_world

输出:

hello_world.c: In function ‘main’:
hello_world.c:6:9: warning: unused variable ‘i’ [-Wunused-variable]
     int i;
         ^

在这里,我们看到警告:变量“ i”已声明但在函数中根本没有使用。

如果计划使用调试器测试程序,则需要告诉gcc包含调试信息。使用'-g'选项获得调试支持。

gcc -Wall -g hello_world.c -o hello_world

hello_world现在具有GDB支持的调试信息。如果使用其他调试器,则可能需要使用其他调试选项,以便正确格式化输出。有关更多调试选项,请参见官方gcc文档。

默认情况下,gcc会编译代码,以便于调试。gcc可以优化输出,以使最终的可执行文件产生相同的结果,但是性能更快,并且可能会导致可执行文件的大小更小。'-O'选项启用优化。在O后面添加几个公认的限定词,以指定优化级别。每个优化级别都会添加或删除一组命令行选项。“ -O2”,“-Os”,“-O0”和“ -Og”是最常见的优化级别。

gcc -Wall -O2 hello_world.c -o hello_world

“ -O2”是用于生产就绪代码的最常见的优化级别。它在性能提高和最终可执行文件大小之间达到了极好的平衡。

gcc -Wall -Os hello_world.c -o hello_world

“ -Os”类似于“ -O2”,除了禁用某些可能通过增加可执行文件大小来提高执行速度的优化。如果最终可执行文件的大小对您很重要,请尝试使用“ -Os”,看看最终可执行文件的大小是否存在明显差异。

gcc -Wall -g -Og hello_world.c -o -hello_world

请注意,在上面带有“ -Os”和“ -O2”的示例中,删除了“ -g”选项。这是因为当您开始告诉编译器优化代码时,最终的可执行文件中实际上可能不再存在某些代码行,从而使调试变得困难。但是,在某些情况下,某些错误仅在启用优化后才会发生。如果要调试应用程序并使编译器优化代码,请尝试使用“ -Og”选项。这告诉gcc执行所有不影响调试体验的优化。

gcc -Wall -g -O0 hello_world.c -o hello_world

“ -O0”执行的优化要比“ -Og”少。这是gcc默认使用的优化级别。如果要确保禁用优化,请使用此选项。

 类似资料:
  • 本文向大家介绍TypeScript 你好,世界,包括了TypeScript 你好,世界的使用技巧和注意事项,需要的朋友参考一下 示例 这里我们有一个类 Greeter,它有一个构造函数和一个 greet 方法。我们可以使用 new 关键字构造一个类的实例,然后传入一个字符串,我们希望 greet 方法输出到控制台。Greeter 类的实例存储在 Greeter 变量中,然后我们调用 greet 方

  • 本文向大家介绍qml 你好,世界,包括了qml 你好,世界的使用技巧和注意事项,需要的朋友参考一下 示例 一个简单的应用程序在窗口中心显示文本“ Hello World”。            

  • 本文向大家介绍xaml 你好,世界,包括了xaml 你好,世界的使用技巧和注意事项,需要的朋友参考一下 示例 这是WPF中XAML页面的简单示例。它由XAML中最常见的元素a Grid,aTextBlock和aButton组成。 语法 描述 <Window> 根容器,用于承载可视化数据并使用户能够与之交互的内容。WPF窗口是XAML(.xaml)文件(其中元素为根)和CodeBehind(.cs)

  • 本文向大家介绍processing 你好,世界,包括了processing 你好,世界的使用技巧和注意事项,需要的朋友参考一下 示例 编写处理代码的最简单方法是简单地调用一系列函数。在处理编辑器中按运行按钮,处理将运行您的代码。这是一个例子: 此代码创建一个200x200窗口,绘制一个蓝色背景,将填充颜色更改为绿色,然后在屏幕中间绘制一个圆圈。 但是,大多数处理草图将使用预定义的setup()和d

  • 本文向大家介绍F# 你好,世界!,包括了F# 你好,世界!的使用技巧和注意事项,需要的朋友参考一下 示例 这是一个简单的控制台项目的代码,该项目显示“ Hello,World!”。到STDOUT,然后退出代码为0 逐行细分示例: [<EntryPoint>] -.net属性,用于标记程序(源)的“用于设置入口点的方法”。 let main argv-这定义了main一个由单个参数调用的函数argv

  • 本文向大家介绍sapui5 你好,世界!,包括了sapui5 你好,世界!的使用技巧和注意事项,需要的朋友参考一下 示例 我们首先为应用创建HTML页面。在那里,我们定义了元标记,用于加载SAPUI5库的脚本标记以及用于应用程序内容的占位符。 根据您的安装调整资源所在的路径(<>:<>)。对于OpenUI5,您可以使用src =“ https://openui5.hana.ondemand.com