gcc 及其参数

滤波器设计实战:Filter Solutions软件从入门到精通 本文是Filter Solutions滤波器设计软件的实战指南,从入门到精通。通过设计一个低通数字滤波器的完整流程,详细讲解了参数设置、FIR/IIR选择、窗函数及逼近函数应用。文章重点介绍了如何利用这款经典工具高效完成滤波器设计、性能权衡,并将设计成果导出至MATLAB等平台进行实际验证与应用,是信号处理工程师提升效率的实用参考。 阅读详情

1. gcc: 全名 GNU C Compiler

gcc编译器 能将C, C++, 汇编程序编译,链接成可执行文件。

在linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。

2. gcc编译程序时,编译过程可以被细分为4个阶段:

a.预处理(pre-processing)
b.编译(Compling)
c.汇编(Assembling)
d.链接(Linking)

3.gcc通过后缀来区别输入文件的类型:

.c ----C语言源代码文件
.a ---- 是由目标文件构成的库文件
.C 或 .cc 或 .cxx ---- C++源代码文件
.h ---- 头文件
.i ---- 已经与处理过的C源代码文件
.ii ---- 已经与处理过的C++源代码文件
.o ---- 编译后的目标文件
.s ---- 汇编语言源代码。
.S ---- 经过预编译的汇编语言源代码
 
4. gcc最基本用法:

gcc [options] [filenames]


gcc option 有100多个,
几个最基本,最常用的参数如下:

-o ---- output_filename

-c ---- 只编译,不链接成可执行文件,即把.c等源代码编译成.o的目标文件,但是不链接。

-g ---- 产生调试工具(GNU的gdb)所需要的符号信息,可以用来对编译出的程序进行调试。

-O ---- 优化编译,链接过程,产生的可执行文件执行效率更高,但是编译,链接速度要慢些

-O2 ---- 比O 更彻底的优化。

-Idirname ---- 用来查找执行头文件目录的参数。

-Ldirname ---- 将dirname所指的目录加入到库文件的目录列表中

-lname ----动态链接库 libname.so

-static ---- 静态链接库文件。

-Wall ---- 生成所有警告信息

-w ---- 不生成人和警告

-DMACRO: 相当于程序中的#define MACRO。


5. 链接 和 库 都有动态和静态两种:

静态链接:把程序和库合在一起,每个程序都会有拷贝库。
动态链接:不会把程序和库合在一起,会在运行时,去调用库中的一些函数。

库也有动态库合静态库:

动态库: .so 为后缀。
静态库: .a 为后缀。

 

补充:

a. $time ./optimize   ---- 用来计运行optimize所耗费的时间

b. $touch a.h   ---- 用来黏贴a.h文件

gcc -I(大写i), -L, -l(小写l)

我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:

例:

gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld

上面这句表示在编译hello.c时:

-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include-->/usr/include-->/usr/local/include

-L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,寻找的顺序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib

 -lworld表示在上面的lib的路径中寻找libworld.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件)


GCC参数详解

 

[介绍] 
gcc 
and g++分别是gnu的c & c++编译器 

gcc/g++在执行编译工作的时候,总共需要4步 


1.预处理,生成.i的文件 

2.将预处理后的文件不转换成汇编语言,生成文件.s 

3.有汇编变为目标代码(机器代码)生成.o的文件 

4.连接目标代码,生成可执行程序 

[参数详解] 

-c 
 
  只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 

  例子用法: 

  gcc 
-c hello.c 
  他将生成.o的obj文件 
 
-S 

  只激活预处理和编译,就是指把文件编译成为汇编代码。 

  例子用法 

  gcc 
-S hello.c 
  他将生成.s的汇编代码,你可以用文本编辑器察看 

-E 

  只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里 

  面. 

  例子用法: 

  gcc 
-E hello.c > pianoapan.txt 
  gcc 
-E hello.c | more 
  慢慢看吧,一个hello 
word 也要与处理成800行的代码 
-o 

  制定目标名称,缺省的时候,gcc 
编译出来的文件是a.out,很难听,如果 
  你和我有同感,改掉它,哈哈 

  例子用法 

  gcc 
-o hello.exe hello.c (哦,windows用习惯了) 
  gcc 
-o hello.asm -S hello.c 
-ansi 

  关闭gnu 
c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一 
  些asm 
inline typeof关键字,以及UNIX,vax等预处理宏, 

-wall

     显示警告信息
-fno-asm 

  此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作 

  关键字。 

     

-fno-strict-prototype 

  只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式 

  的对参数的个数和类型说明,而不是没有参数. 

  而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说 

  明的类型 

   

-fthis-is-varialble 

  就是向传统c++看齐,可以使用this当一般变量使用. 

   

-fcond-mismatch 

  允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型 

   

-funsigned-char 

-fno-signed-char 

-fsigned-char 

-fno-unsigned-char 

  这四个参数是对char类型进行设置,决定将char类型设置成unsigned 
char(前 
  两个参数)或者 
signed char(后两个参数) 

-include 

file 
  包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以 
  用它设定,功能就相当于在代码中使用#include 
  例子用法: 
  gcc hello.c -include /root/pianopan.h 
   
-imacros file 
  将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件 
  中 
   
-Dmacro 
  相当于C语言中的#define macro 
   
-Dmacro=defn 
  相当于C语言中的#define macro=defn 
   
-Umacro 
  相当于C语言中的#undef macro 

-undef 
  取消对任何非标准宏的定义 
   
-Idir 
  在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头 
  文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他 
  回先在你所制定的目录查找,然后再按常规的顺序去找. 
  对于#include,gcc/g++会到-I制定的目录查找,查找不到,然后将到系 
  统的缺省的头文件目录查找 
   
-I- 
  就是取消前一个参数的功能,所以一般在-Idir之后使用 
   
-idirafter dir 
  在-I的目录里面查找失败,讲到这个目录里面查找. 
   
-iprefix prefix 
-iwithprefix dir 
  一般一起使用,当-I的目录查找失败,会到prefix+dir下查找 
   
-nostdinc 
  使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确 
  限定头文件的位置 
   
-nostdin C++ 
  规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创建 
  libg++库使用 
   
-C 
  在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很 
  方便的 
   
-M 
  生成文件关联的信息。包含目标文件所依赖的所有源代码 
  你可以用gcc -M hello.c来测试一下,很简单。 
   
-MM 
  和上面的那个一样,但是它将忽略由#include造成的依赖关系。 
   
-MD 
  和-M相同,但是输出将导入到.d的文件里面 
   
-MMD 
  和-MM相同,但是输出将导入到.d的文件里面 
   
-Wa,option 
  此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选 
  项,然后传递给会汇编程序 
   
-Wl.option 
  此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选 
  项,然后传递给会连接程序. 
   

-llibrary  
  制定编译的时候使用的库 
  例子用法 
  gcc -lcurses hello.c 
  使用ncurses库编译程序 
   
-Ldir 
  制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然 
  编译器将只在标准库的目录找。这个dir就是目录的名称。 
   
-O0 
-O1 
-O2 
-O3 
  编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最 
  高   
   
-g 
  只是编译器,在编译的时候,产生条是信息。 
   
-gstabs 
  此选项以stabs格式声称调试信息,但是不包括gdb调试信息. 
   
-gstabs+ 
  此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息. 
   
-ggdb 
  此选项将尽可能的生成gdb的可以使用的调试信息.



鸿蒙开发实战项目(九十二):HUAWEI Health血压测量 是华为开发的用于运动健康领域的一个开放平台, 三方APP可以借助HUAWEI Health开放平台提供的。 阅读详情

相关推荐

Ansys Zemax与Speos协同设计:从HUD光学优化到驾驶环境可视化全流程解析

本文深入解析了如何利用Ansys Zemax与Speos进行协同设计,实现从HUD光学系统核心优化到驾驶环境可视化验证的全流程。文章强调了HUD设计是光学性能与视觉感知的深度耦合,通过Zemax进行精密光学设计,再利用Speos进行系统级仿真与感知模拟,最终完成从虚拟到现实的闭环验证,有效提升HUD产品的开发效率与可靠性。

weixin_29199873的博客 243

GCC参数介绍

gcc参数介绍 -x language filename 设定文件所使用的语言,而不是以后缀识别语言 -x none filename 关掉上个选项的语言设置,使用文件的后缀识别语言 -c 对文件进行预处理、编译和汇编,生成obj文件 gcc -c hello.c -C 在预处理的时候,不删除注释信息,一般用于分析程序 -S 只进行预处理和编译,生成汇编代码 gcc -S hello.c ...

qq_38600065的博客 2278

SEG-Y 数据介绍及读写

无

1万+

GCC参数详解

thankslinux的专栏 304

Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法)

使用Python、Selenium实现问卷星自动填写,内含适配个人问卷的方法。

DaenCode的博客 3836

RK3588开发笔记-ISP模块参数调试

本文详细介绍了基于RK3588平台的ISP模块参数调试流程。主要内容包括:硬件准备(RK3588板卡、IMX415摄像头等)、软件环境搭建(Ubuntu系统、RKISP_Tuner工具)、IMX415摄像头基础使用验证、RKISP2.x Tuner工具的使用方法(新建/加载IQ参数文件、Sensor配置、Raw图采集)以及最终IQ文件的部署。文章重点强调了基础标定的重要性,建议开发者分场景调试并参考官方文档,通过合理配置ISP参数来优化图像质量。该调试流程适用于RK3588平台的图像采集类项目开发。

flypig has a dream! 838

GCC 参数详解

PWN——GCC编译中几种保护打开和关闭的参数 NX:-z execstack / -z noexecstack (关闭 / 开启) 栈不可执行,开启后不会把栈上的数据当作代码来执行 Canary:-fno-stack-protector /-fstack-protector / -fstack-protector-all (关闭 / 开启 / 全开启) 打开后会向栈中插入一段特殊数据,在函数返回的时候验证这段特殊数据是否被改变,如果改变,则终止该程序。防止栈溢出。 PIE:-no-pie / -

weixin_45943522的博客 2279

OpenClaw实战系列01:OpenClaw接入飞书机器人全接入指南 + Ollama本地大模型

通过 OpenClaw + Ollama + 飞书的组合,我们成功搭建了一个完全私有、免费、可定制的AI助理。它不仅能在日常聊天中提供帮助,还能通过OpenClaw强大的“技能”体系,真正去操作你的电脑、管理文件、甚至执行代码。这套方案将数据留在本地,既保证了隐私安全,又锻炼了动手能力。现在,去给你的AI助理添加更多酷炫的技能吧!

PeterPan的博客 1万+

gcc参数详解

GCC参数详解下面的东西可能也不是很全面但对初学者有帮助。[介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld

sEmIbIt fIeLd 1781

【原理图PCB专题】Cadence17.4 PCB位号重排与反标

Cadence17.4 PCB位号重排与反标比Cadence16版本更简单一些,那到底如何操作?

一点硬件 1181

论文阅读 AIED 2024 Coding with AI: How Are Tools Like ChatGPT Being Used by Students in Foundational Pro

该论文题为《Coding with AI: How Are Tools Like ChatGPT Being Used by Students in Foundational Programming Courses》,由美国犹他州立大学的 Aashish Ghimire 与 John Edwards 共同撰写,发表于人工智能与教育领域顶级会议。

CSPhD-winston的博客 307

gcc参数大全

[介绍]  gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步  1.预处理,生成.i的文件[预处理器cpp]  2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]  3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]  4.连接目标代码,生成可执行程序[链接器ld] [参数详解]  -x lang

3904

【工具插件类教学】Unity翻书效果插件Book-Page Curl Pro教程

特征: • 从左到右和从右到左翻页 • 与画布缩放器 配合使用 • 可配置的自动翻转脚本 • 支持向页面 添加 UI 元素 • 支持透明页面 • 适用于“世界空间”画布

纯技术流日常开发商业开发记录总结等 3672

gcc常用的使用参数

本文详细介绍了GCC编译器的常用参数与实用技巧,涵盖从预处理到优化的完整编译流程。主要内容包括:编译流程控制参数(-E、-S、-c、-o)、警告处理(-Wall、-Werror)、优化选项(-O0到-O3)、调试参数(-g)、头文件与库文件路径设置(-I、-L、-l)、预处理器定义(-D)、C标准选择(-std)等。同时提供了多文件编译、动态库生成等实战示例,以及常见错误的解决方法,帮助开发者高效使用GCC进行项目构建和调试。

2503_90160677的博客 969

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

gcc常用参数

http://blog.youkuaiyun.com/yezhaohui2011/article/details/7097063 简介 gcc and g++现在是gnu中最主要和最流行的c & c++编译器 .gcc/g++在执行编译工作的时候,总共需要以下几步: 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有

Yerasel的专栏 1253

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

GCC 参数

-D macro 或者 -Dmacro 相当与 在代码中添加#define macro (这里的macro可以是任何字符串,-D才是选项,而不是-Dmacro)-D macro=defn 相当与在代码中添加 #define macro=defn-Umacro  相当于C语言中的#undef macro -Idir   在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如 果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他会先在你所制定的目录查找,然后

orzlzro的专栏 6033

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

gcc的各个参数

1.gcc工作流程     1.1 预处理 --E         所作的内容有:宏替换、头文件展开、去掉注释         xxx.c文件 -> xxx.i文件(.i文件还是c文件)     1.2 编译 --S  最浪费时间的          xxx.i -> xxx.s(.s是汇编文件)     1.3 汇编 -c         xxx.s -> xxx.o(.o是二...

liujun5319的博客 6253

gcc 参数详解

GCC参数详解[介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] [参数详解] -x language f

hi!abslute005 517

GCC 参数介绍

source: http://blog.csai.cn/user1/21439/archives/2007/19340.html 这篇文档是我的关于gcc参数的笔记,我很怀念dos年代我用小本子,纪录所有的dos   命令的参数.哈哈,下面的东西可能也不是很全面,我参考了很多的书,和gcc的帮助.   不全的原因是,有可能我还没有看到这个参数,另一种原因是,我可能还不会用它:)   不过,

something... 1081

GCC参数详解gdb

GCC参数详解[版本] -0.13 [声明] 这篇文档是我的关于gcc参数的笔记,我很怀念dos年代我用小本子,纪录所有的dos 命令的参数.哈哈,下面的东西可能也不是很全面,我参考了很多的书,和gcc的帮助. 不全的原因是,有可能我还没有看到这个参数,另一种原因是,我可能还不会用它 不过,我会慢慢的补齐的.哈哈 如果你要转在本文章请保留我的email(pianopan@beeship.com)和

jiangxinyu的专栏 1056

linux gcc参数集

【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) linux gcc参数集 0. GCC 与 gcc GCC, The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these lang...

手中沙的博客 478

GCC常用参数详解

简介 gcc and g++现在是gnu中最主要和最流行的c & c++编译器 .gcc/g++在执行编译工作的时候,总共需要以下几步: 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] GCC能够处理的后

小石头 1335

gcc 参数

gcc gcc与 g++ 分别是GNU的C与 C++ 的编译器,在编译工作中分4步: 1. 预处理,生成.i文件 2. 编译器,编译后停下来,生成.o的目标文件 3. 汇编器,汇编后停下来,生成.s的汇编文件 4. 连接器,链接目标代码,生成可执行程序 gcc使用格式 gcc [-c|-S|-E] [-std=standard] [-g] [-pg] [-Ol...

outlier的博客 1140
上一篇: 链表 - list
下一篇: gdb
lamdoc
博客等级 码龄18年 155粉丝 655原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值