博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gcc 常用命令行及解释
阅读量:6244 次
发布时间:2019-06-22

本文共 2390 字,大约阅读时间需要 7 分钟。

gcc - GNU project C and C++ compiler
 
gcc [option] file...
           preprocessing         compilation               assembly       linking
.c(with macros)--->.c(without macros)--->assembler input file--->object file--->executable file
 
-E, -S, -c 告诉在编译哪个阶段停止。
              -E 在执行 preprocessing 后停止,产生标准输出。
              -S 在执行 compilation 后停止,产生 .s 文件。
              -c 在执行 assembly 后停止,产生 .o 文件。
 
-std 指定编译器使用的标准。常用标准:c90, c89(就是c90), c99, gnu90(default), gnu99, c++98, gnu++98。示例:-std=c90。
              -ansi for C code 等价 -std=c90。-ansi for C++ code 等价 -std=c++98。
 
-pedantic Issue all the warnings demanded by strict ISO C and ISO C++;
               reject all programs that use forbidden extensions, and some other programs that do not follow ISO C and ISO C++.
               需配合 -std 或 -ansi 使用。
 
-g 添加标准调试信息。另一个选项 -ggdb,添加对 gdb 更友好的调试信息。
 
-pg 当想使用性能分析工具 gprof 时,需要添加该选项。
 
-O 优化(Optimize)。常用可选值:-O0(default), -O1(等价 -O), -O2(一般使用的优化级别), -O3, -Os(针对空间优化)。
 
-Wall 开启所有提醒。-Werror 把提醒当作错误。
 
-I 添加 include 目录。
-L 添加 lib 目录。
-l 将库文件添加到链接过程中,默认是链接 shared libraries。下面是为什么把 -l 放到命令行最后的原因。
           It makes a difference where in the command you write this option;
           the linker searches and processes libraries and object files in the
           order they are specified.  Thus, foo.o -lz bar.o searches library z
           after file foo.o but before bar.o.  If bar.o refers to functions in
           z, those functions may not be loaded.
-static 强制使用 static linking 来链接库(gcc 默认使用 shared linking, 不成功再试用 static linking)。链接库时有两种选择:static linking(*.a, archive file), dynamic linking(*.so, shared object)。
 
-shared
           Produce a shared object which can then be linked with other objects
           to form an executable.
 
-Dmacro[=defn] 定义 macro。
-U 取消 macro 的定义。该 macro 可以是 either built in or provided with a -D option。
试验  , -D #define, -U #undef
 
-o 定义 output 文件名。
 
-f Options of the form -fflag specify machine-independent flags.应该不常用吧。
      -fPIC emit position-independent code, suitable for dynamic linking and avoiding any limit on the
           size of the global offset table. 
-m   Each target machine types can have its own special options, starting
       with -m, to choose among various hardware models or
       configurations---for example, 68010 vs 68020, floating coprocessor or
       none.  A single installed version of the compiler can compile for any
       model or configuration, according to the options specified.应该不常用吧。
 
将 option 传给链接器:
gcc -Wl,a,b -> ld a b
-Wl,a,b=-Wl,a -Wl,b
 
man gcc  开头一段指明的常用的选项,不错。但整个文档的体积太大了。确实没法看完。
 对如何学习 gcc 有介绍,对常见选项有介绍,其中运行时检测没试出来

转载于:https://www.cnblogs.com/uhziel/p/3164048.html

你可能感兴趣的文章
【转载】常用统计软件下载地址大全
查看>>
新的思想来源
查看>>
对于超大型SQL SERVER数据库执行DBCC操作
查看>>
Binary Tree Level Order Traversal II
查看>>
Python 点滴 I
查看>>
Java泛型详解
查看>>
分治算法思想介绍
查看>>
1 张图秒懂 Nova 16 种操作 - 每天5分钟玩转 OpenStack(44)
查看>>
MVP模式在Android项目中的使用
查看>>
一起同过窗
查看>>
XMLHttpRequest详解
查看>>
9 数字载波传输1
查看>>
iOS开发之功能模块--高仿Boss直聘的IM界面交互功能
查看>>
Flume Source 实例
查看>>
MySQL 缓存表建触发器
查看>>
.NetCore~C#6的一些新特性
查看>>
Recurrent Neural Networks(RNN) 循环神经网络初探
查看>>
多线程中数的原子性加减
查看>>
客户被绑,蒙眼,惊问:“想干什么?” 对方不语,鞭笞之,客户求饶:“别打,要钱?” 又一鞭,“十万够不?” 又一鞭,“一百万?” 又一鞭。客户崩溃:“你们TMD到底要啥?” “要什么?......
查看>>
jQuery.fly插件实现添加购物车抛物线效果
查看>>