linux编译c 优化,Linux编译选项

Linux平台都通过CC调用它们的C编译程序.除标准和CC以外,LINUX和FREEBSD还支持gcc.

基本的编译命令选项有以下几种:

1. -c    (compile)

编译产生对象文件(*.obj)/目标文件,而不链接成可执行文件,当编译几个独立的模块,而待以后由链接程序把它们链接在一起时,就可以使用这个选项,如:

$cc -c hello.c ===> hello.o

$cc hello.o

上面的cc表示选用的编译器,如gcc,g++等。

2. -o    允许用户指定输出文件名,output 如

$cc hello.c -o hello.o

or

$cc hello.c -o hello

3. -g    指明编译程序在编译的输出中应产生调试信息.

这个调试信息使源代码和变量名引用在调试程序中或者当程序异常退出后在分析core文件时可被使用.

4. -D   允许从编译程序命令行定义宏符号。一共有两种情况:

一种是用-DMACRO,相当于在程序中使用#define MACRO

另一种是用-DMACRO=A,相当于程序中的#define MACRO A.如对下面这代码:

#ifdefine DEBUG

printf("debug messagen");

#endif

编译时可加上-DDEBUG参数,执行程序则打印出编译信息

5. -I   可指定查找include文件的其他位置.

例如,如果有些include文件位于比较特殊的地方,比如/usr/local/include,就可以增加此选项如下:

$cc -c -I/usr/local/include -I/opt/include hello.c 此时目录搜索会按给出的次序进行.

6. -E   这个选项是相对标准的,它允许修改命令行以使编译程序把预先处理的C文件发到标准输出,而不实际编译代码.

在查看C预处理伪指令和C宏时,这是很有用的.可能的编译输出可重新定向到一个文件,然后用编辑程序来分析:

$cc -c -E hello.c >cpp.out       此命令使include文件和程序被预先处理并重定向到文件cpp.out.

以后可以用编辑程序或者分页命令分析这个文件,并确定最终的C语言代码看起来如何.

7. -O  优化选项, 这个选项不是标准的

-O和-O1指定1级优化

-O2 指定2级优化

-O3 指定3级优化

-O0 指定不优化

$cc -c O3 -O0 hello.c  当出现多个优化时,以最后一个为准!!

8. -Wall  以最高级别使用GNU编译程序,专门用于显示警告用!!

$gcc -Wall hello.c

9. -L  指定连接库的搜索目录,-l(小写L)指定连接库的名字

$gcc main.o -L/usr/lib -lqt -o hello

上面的命令把目标文件main.o与库qt相连接,连接时会到/usr/lib查找这个库文件.也就是说-L与-l一般要成对出现.

10. -P 仅进行编译预处理

---- 在命令行中加上-P选项可以使cc仅完成对.c文件的预处理工作,而后面的编译,汇编,优化,链接则都不做。例如:

$gcc -P my.c  此时编译系统将在当前目录下生成一个名为my.i的文件。这个文件中包含有对my.c中的伪指令进行处理后的代码及my.c中

原有的代码。在某些情况下,.i文件可能对于程序排错有一定的用处。

11. -S 仅生成汇编语言代码

---- 在cc命令行中加上-S选项,可以使cc只调用预处理程序和编译程序以生成与源程序相应的汇编代码。

与每一个c源文件相应的汇编程序被放到相应的.s文件中。例如:

$ gcc -S  myprog.c myfunc.c

$ ls *.s

myprog.s   myfunc.s

补充:

1)把待执行的程序送入内存,称为装入程序。

2)把待执行的程序与程序库及其它已编译好的程序连接起来,所用的准备程序称为链接程序。

如果多个逻辑CPU的“physical id”和“core id”均相同,说明开启了超线程(Hyper Threading)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux无filelength函数,Linux Shell 自定义函数(定义、返回值、变量作用域)介绍

定义Shell函数(define function) 语法:[ function ] funname [()]{action;[return int;]}说明:可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。参数返回,可以显示加:return 返回,如果不加&…

编译linux内核成vmlinuz,内核编译之vmlinuz vmlinux system.map initrd

一、vmlinuzvmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行 的Linux内核,它位于/boot/…

linux ssh登录历史,Linux中的SSH登录

在Linux系统中需要使用SSH远程登录到另一个Linux系统,可以使用SSH命令加用户和IP地址的方法。ssh命令用于远程登录上的Linux主机。常用格式:ssh [-l login_name] [ –p port] [userhostname]例如不指定用户:ssh 192.168.0.100指定用户&#x…

linux监控电脑配置,Zabbix基本配置及监控主机

监控主机一版需要在被监控的主机上安装Zabbix Agent监控主机安装zabbix-agent首先需要在被监控的主机上安装agent,可以下载预编译好的RPM进行安装,下载地址:http://www.zabbix.com/download也可以源码安装,类似server的安装&#…

linux内网安装git,一键安装GitLab7在RHEL6.4上

1 关于gitlab7无论如何gitlab是个好东西,但是极难安装和配置。bitnami(https://bitnami.com/)的一键安装包虽然可以解决大问题,但是仍有很多人无法配置gitlabnginx和email发送等等问题。今天特意完整地再梳理一次。对各位读者的问题不再逐一…

linux显示点阵字体,Fedora 17中文字体显示点阵状的解决方法

在Fedora 17中文字体的显示变成点阵状了,为什么在Fedora 16下中文字体是文泉驿正黑。到Fedora 17之后,中文字体由文泉驿正黑(WenQuanYi Zen Hei)变为WenQuanYi Zen Hei Sharp。这个新字体的特殊之处就是在12磅及以下的中文字体,将显示成点阵字…

opencomm在c语言中的作用,使用OpenMPI从Fortran调用C语言

我有一个编译时问题,我已经减少到以下测试用例.我希望从fortran调用一个C例程,让C例程知道MPI.请考虑以下示例代码,Fortran主要:! -- main.f90program mainimplicit noneexternal return_threeinteger return_threewrite(*,*) return_three()end program mainC子程序…

c语言打印空心矩形图案的程序,C语言之输出空心棱形图案

#include#includevoid main(){int n,j,i; /*i为行数,j为每行中的项数*/printf("输入图案上三角的高度n:");scanf("%d",&n);;i < n;i) /*打印上三角&#xff0c;(包括中间行)*/{;j < n - i;j){-i || j n - - i * i )printf(" *");el…

数据结构c语言版9 答案,2019考研数据结构C语言版详解答案:栈和队列(9)

《数据结构(C语言版)》考试内容两大类&#xff1a;概念&#xff0c;算法。自从计算机专业课统考以后&#xff0c;专业课考试题型分为2类&#xff0c;一类选择题&#xff0c;一类综合应用题。要想把数据结构这门专业课复习好&#xff0c;除了做练习题&#xff0c;还要掌握2019考…

中英翻译机c语言实验报告引言,课程设计--C语言关键字中英翻译机.doc

课程设计--C语言关键字中英翻译机.doc课 程 设 计 报 告学院、系 吉林大学珠海学院计算机科学与技术系专业名称 计算机科学与技术课程设计科目 C 语言程序课程设计所在班级 4 班学生学号 04110407学生姓名 曾伟雄指导教师 李昱完成时间 2012 年 3 月-5 月C 语言关键字中英翻译机…

两个序列的中位数c语言,小白在线求教 用归并排序实现查找两个有序序列的中位数...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼两个有序序列的中位数 (20分)已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第⌊(N1)/2⌋个数(A0为第1个数)。输入格式:输入分三行。第一行给出序列的公共长…

c语言优化冒泡法,C语言:冒泡法排序一组数,如何优化?

#define _CRT_SECURE_NO_WARNINGS 1#include#includeint main(){int arr[] { 5, 6, 7, 8, 9 ,1, 2, 3, 4};int i 0;int j 0;int flag;int size sizeof(arr) / sizeof(arr[0]);for (i 0; i < size- 1 ; i){flag 1;//设置标志位&#xff0c;优化冒泡for (j 0; j < s…

android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解...

《Android实现获取短信验证码的功能以及自定义GUI短信验证详解》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《Android实现获取短信验证码的功能以及自定义GUI短信验证详解(8页珍藏版)》请在人人文库网上搜索。1、Android实现获取短信验证码的功能以 及自定义GUI短信…

android 分享到豆瓣,Android项目总结之社会化分享

随着现在社交网络的日益繁多&#xff0c;众多的社交客户端已占据了人们的大量时间&#xff0c;所以在我们的应用中具有一键分享的功能对提高我们产品的知名度有很大的帮助。新浪微博、腾讯微博、腾讯QQ、微信、QQ空间、豆瓣等众多知名社交站点&#xff0c;都是我们可以分享的去…

android实现自动横竖屏切换,android 中实现横竖屏切换【原创】

我们在使用android手机的时候&#xff0c;发现一些应用有横竖屏切换的功能&#xff0c;一般实现有以下几种方法&#xff1a;一、设置1.通过XML设置横竖屏切换在项目的 AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性&#xff0c;它有以下几个…

超级管理器Android,超级文件管理器app

详情超级文件管理器app&#xff0c;一款帮助你管理手机内存的软件&#xff0c;还可以重命名&#xff0c;移动&#xff0c;删除文件&#xff0c;在Android平台上完美运行&#xff0c;并能够与其他OI系列软件结合使用! 能快速地查找到目标文件&#xff0c;十分方便用户管理自己手…

android miui ios,从iOS到Android——小米11及小米生态实际使用体验

从iOS到Android——小米11及小米生态实际使用体验2021-02-22 15:29:5693点赞155收藏131评论创作立场声明&#xff1a;文中的设备均为自购&#xff0c;无任何特定立场。2021年2月10日&#xff0c;我的iPhoneX手机突然黑屏&#xff0c;拿到Apple Store检测&#xff0c;经诊断是屏…

android amd cpu架构,AMD CPU 架构

同频率、同缓存容量的CPU才能比较出不同架构的优劣。目前Intel、AMD常见CPU架构性能从高到低&#xff1a;Intel Core i7 (Core i7/ Core i5)AMD K10.5 (PhenomII)Intel Core/Core2AMD K10 (Phenom)AMD K8AMD K7Intel P6 (PentiumM、Pentium3、Pentium2、PentiumPro)Intel NetBu…

p50会搭载鸿蒙吗,华为Mate40和华为P50也会搭载鸿蒙,华为Mate30跌至白菜价让路

原标题&#xff1a;华为Mate40和华为P50也会搭载鸿蒙&#xff0c;华为Mate30跌至白菜价让路华为Mate40和华为P50也会搭载鸿蒙&#xff0c;华为Mate30跌至白菜价让路&#xff01;华为P50Pro的机身部分后置摄像头模块的外观有发生了改变&#xff0c;可以看到华为P50Pro并没有将所…

android 天气接口简书,天气API接口说明

天气API接口稳定的确实没有&#xff0c;除非是天气官方提供的&#xff0c; 但是我观察了下&#xff0c;要是合作伙伴才有开放的可能。其他的&#xff0c;例如&#xff1a;百度 APIStore、一些同学在其他网站上抓包下来的接口&#xff0c;以及什么各种收费的 API&#xff0c;都没…