加个-g 是为了gdb 用,不然gdb用不到 二、-o -o指定输出文件名 -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 一般语法: gcc filename.c -o filename 上面的意思是如果你不打 -o filename(直接gcc filen...
gcc-E-o hello.i hello.c gcc-S-o hello.s hello.i gcc-c-o hello.o hello.s gcc-o hello hello.o 上面一连串命令比较麻烦,gcc会对.c文件默认进行预处理操作,使用-c再来指明了编译、汇编,从而得到.o文件, 再将.o文件进行链接,得到可执行应用程序。简化如下: 代码语言:javascript 代码运行次数:0 复制...
那其实这个可执行文件的名字我们是可以自己指定的gcc -o 新生成文件名 原文件名"-o"选项用于指定生成的可执行文件或目标文件的名称。 -o之后一定是加我们自己给新生成文件起的名字 对于程序的翻译,分为下面几个过程: 2.1 预处理(预编译) 预处理阶段主要完成头文件的展开、宏替换、条件编译和去掉注释等工作。 那...
1 -O0/-Og -O0是默认选项,不执行任何优化。在编译调试版本的时候,一般使用-O0,可以确保调试执行过程完全和代码一致(如果使用优化选项,根据源文件设定的断点和经过优化编译得到的程序可能对不上,所以不能准确停在预期的地方)。 -Og是针对调试的优化选项,它会启用-O1的优化指令,除了那么可能会干扰调试的优化选...
我们都知道在一般的嵌入式开发中,使用gcc编译固件的一般流程是,先把所有的.c文件和.s文件编译成.o文件,然后把所有的.o文件链接成一个elf文件,最后由elf文件导出bin文件。 那么在链接成elf文件这一步中,我们需要使用到一个叫链接脚本的文件,这个文件主要描述了程序的ROM分布和RAM分布,它也直接决定了二进制文件的...
先把这2个源文件编译成目标文件sub.o和main.o: 复制 $ gcc-m32-c sub.c$ gcc-m32-c main.c 1. 2. 这样就得到了两个目标文件,先来初步看一下这2个目标文件中的一些信息。 以上这两个编译过程是各自独立的,虽然main.o中使用了两个符号(全局变量和全局函数),但是此时main.o并不知道这2个符号是在哪个...
-O0: 不做任何优化,这是默认的编译选项。 -O和-O1: 对程序做部分编译优化,对于大函数,优化编译占用稍微多的时间和相当大的内存。使用本项优化,编译器会尝试减小生成代码的尺寸,以及缩短执行时间,但并不执行需要占用大量编译时间的优化。 打开的优化选项: ...
1.-O,-O1: 这两个命令的效果是一样的,目的都是在不影响编译速度的前提下,尽量采用一些优化算法降低代码大小和可执行代码的运行速度。并开启如下的优化选项: -fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim -fcprop-registers ...
gcc -o hello hello.c “` 其中,-o参数指定生成的可执行文件的名称,hello是指定的输出文件名,hello.c是源代码文件名。 3. 运行可执行文件 编译成功后,可以使用以下命令来运行生成的可执行文件: “`shell ./hello “` 可在终端窗口中看到输出结果为”Hello, World!”。