linux编译代码命令,Linux下使用GCC命令编译代码

Linux下初学时最好从命令行入手,这样可以熟悉从编写程序、编译、调试和执行的整个过程。编写程序可以用vi/vim(个人觉得vim比vi好用)或其它编辑器编写。

编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。

gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心。

一. 常用编译命令选项

假设源程序文件名为test.c

1. 无选项编译链接

用法:#gcc test.c

作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。编译成功后可以看到生成了一个a.out的文件。在命令行输入./a.out 执行程序。./表示在当前目录,a.out为可执行程序文件名。

2. 选项 -o

用法:#gcc test.c -o test

作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。输入./test执行程序。

3. 选项 -E

用法:#gcc -E test.c -o test.i

作用:将test.c预处理输出test.i文件。

4. 选项 -S

用法:#gcc -S test.i

作用:将预处理输出文件test.i汇编成test.s文件。

5. 选项 -c

用法:#gcc -c test.s

作用:将汇编输出文件test.s编译输出test.o文件。

6. 无选项链接

用法:#gcc test.o -o test

作用:将编译输出文件test.o链接成最终可执行文件test。输入./test执行程序。

7. 选项-O

用法:#gcc -O1 test.c -o test

作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,www.linuxidc.com但编译时间越长。输入./test执行程序。

8.编译使用C++ std库的程序

用法:#gcc test.cpp -o test -lstdc++

作用:将test.cpp编译链接成test可执行文件。-lstdc++指定链接std c++库。

二. 多源文件的编译方法

如果有多个源文件,基本上有两种编译方法:

[假设有两个源文件为test.c和testfun.c]

1. 多个文件一起编译

用法:#gcc testfun.c test.c -o test

作用:将testfun.c和test.c分别编译后链接成test可执行文件。

2. 分别编译各个源文件,之后对编译后输出的目标文件链接。

用法:

#gcc -c testfun.c //将testfun.c编译成testfun.o

#gcc -c test.c    //将test.c编译成test.o

#gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test

以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。0b1331709591d260c1c78e86d0c51c18.png

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

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

相关文章

简要描述内部连接和外部连接之间的区别_sqlserver的几种常见连接方法

感谢本文几种描述方法,让我解决了最近的一段时间的疑问,转载下来,以供后面查血使用。本文链接:https://blog.csdn.net/huanghanqian/article/details/52847835四种join的区别已老生常谈:INNER JOIN(也可简写为JOIN): 如…

有两个python怎么停用其中一_python3.X 复学(2)-----开始了就不要停止

生命就是一种旅行,开始了就不要停止,无非就是眼前的苟且还有以后的苟且,只要还有一口气 ----------hashlinux 因为Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,放到Li…

react项目中的参数解构_一天入门React学习心得

一天入门React学习心得阅读前必读本文写的仓促,算是一个学习笔记吧,算是一个入门级的学习文章。如果你刚刚入门,那么可能一些入门的视频可能更加适合你。但如果具备一些知识,比如Vue,那么视频就不适合了。建议看完本篇…

python random函数_详细代码实战讲解:如何用 Python让自己变成天选之子

今天为大家带来的内容是:详细代码讲解:如何用 Python让自己变成天选之子话不多说直接上代码:请大家猜一猜下面这段代码的运行效果:你是不是以为这段代码运行以后,结果如下图所示?但实际上,我可以…

安卓图标_干货 | 安卓界面系统规范

众所周知,安卓系统是开源的,国内又有超多的手机厂商,小米、魅族、华为、oppo、三星等,每一个品牌有属于自己的UI设计规范,但是我们主要分析UI界面尺寸规范。1、字体安卓系统中文采用的是思源黑体,英文字体为…

pyqt安装_Win10下安装LabelImg以及使用(绝对是全网最简单的教程)

labelImg是图片标注软件,用于数据集的制作、标注等等。下面介绍labelImg的安装过程。我用的是anaconda,所以以anaconda prompt作为终端:在Anaconda Prompt中依次运行以下命令(注意大小写):pip install PyQt…

delphi listview 添加数据 慢_ListView 的缓存机制

一.前言ListView 作为一个 Android 5.x 之前的一个用于显示数据列表的控件,或许在今天都已经被 RecyclerView 完全替代,但是其中的缓存机制仍然值得我们去了解,对后面学习 RecyclerView 的缓存机制有很大的帮助。下面将根据 ListView 的三个过…

c++ 显示三维散点图_【无机纳米材料科研制图——OriginLab 0210】Origin多组柱状图3D柱状图及3D散点图...

此篇,我们来分享Origin绘制多组柱状图、立体柱状图和三维散点图。一、多组柱状图1)准备数据。准备数据,并点击Plot——》Column/Bar/Pie——》Column进行绘制。结果如下。2)带有误差棒的绘图。如果想绘制带有误差棒的直方图&#…

保存文件_wps文件保存在哪里

我们经常使用WPS进行文本、表格的编辑,有时候顺手点击保存之后,文件就会根据默认文件路径保存,如果您不知道默认的文件保存路径,怎么才能够找到刚刚保存的文件,下面就为大家介绍一下wps文件保存在哪里,希望…

linux 内核io操作,关于Linux内核中的异步IO的使用

我们都知道异步IO的作用,就是可以提高我们程序的并发能力,尤其在网络模型中。在linux中有aio的一系列异步IO的函数接口,但是这类函数都是glibc库中的函数,是基于多线程实现,不是真正的异步IO,在内核中有真正…

linux内核模块实验,linux内核模块实验(2学时).doc

第一个内核模块实验一: 预习要求:( 1 ) 做本实验之前,请复习相关内核模块知识。( 2 ) 请了解内核模块的编写、编译及安装与卸载方法。( 3 ) 请学习内核打印函数 printk() 的用法。( 4 ) 请复习 Makefile 文件的编写。二:实验目的&…

mobi格式电子书_进阶能力 | 了解常见的电子书格式

静读君是初中开始接触电子书的,那个时候以为电子书就是TXT,到后来渐渐地接触到了PDF、DOC、CAJ 才知道原来电子书还分这么多的格式,那个时候还在想,为什么要弄这么多不同的格式呢?那不是自找麻烦吗?接触的…

python的pass在函数中的作用_Pass Share:Python / Julia 中函数变量的传递机制

从 C / MATLAB 过来的同学注意!Julia / Python 中使用的参数传递变量方式是不一样的。(以C的眼光看)在语法上细微的差别就会产生完全不一样的内容。(至少我被坑了很多次)。这篇文章的主要作用是逃坑以及方便各种从不同语言过来的人投奔我们Julia!/狗头变…

linux启动keepalived服务,llinux企业常用服务---HA+keepalived双机热备

部署前准备:iptables和selinux没配置,关掉挂载系统镜像作为本地yum源,修改yum文件源码包准备keepalived-1.2.13.tar.gz环境介绍:2台centos6.5虚拟机,主服务器ip:192.168.100.150;从服务器ip&…

python 日志不会按照日期分割_python 按照日期切分大日志文件(重点)和按照指定大小切分日志文件...

#! /usr/bin/env python # -*- coding:utf8 -*- # 切分nginx 按照日期切分日志文件 from __future__ import division import os,sys big_file‘/data/logs/media.net.error.log‘ # 按照文件大小拆分 def split_by_filesize(fromfile,todir,chunksize0): """ c…

c++ udp通信_Web 通信协议,你还需要知道:SPDY 和 QUIC

一、开拓者:SPDY1. 简介:spdy 是由google推行的,改进版本的HTTP1.1 (那时候还没有HTTP2)。它基于TCP协议,在HTTP的基础上,结合HTTP1.X的多个痛点进行改进和升级的产物。它的出现使web的加载速度有极大的提高。HTTP2也借…

linux退出windows域,删除Windows AD域控制器的三种方法

一、域控可以正常工作1、删除辅助域控:单击“开始”,单击“运行”,然后键入以下命令:dcpromo /forceremoval然后按提示操作。2、删除主域控:1)打开Active Directory 用户和计算机 ->Domain Controllers,右键点击所要…

查看 rabbitmq 启动websocket 提示404_RabbitMQ 部署记录

erlang与rabbitmq版本对应关系:https://www.rabbitmq.com/which-erlang.html安装erlang下载地址:http://www.erlang.org/downloads11.安装依赖 2yum install -y gcc gcc-c ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term…

react如何卸载组件_reactjs – 如何删除/卸载嵌套的反应组件

是的,你建议的解决方案render: function () {var home this.state.remove_home ? null : return ({home}),handleNavbarClick: function () {this.setState({remove_home: true});}或多或少是使用React处理此问题的“正确”方法.请记住,渲染的目的是描述组件在任何给定点上的…

linux远程windows执行cmd,Linux服务器远程连接window服务器并执行cmd命令

前段时间,要给一个分布式调度系统写一个运维脚本,这个分布式调度系统部分子系统部署在window服务器上,这个时候就要想办法用Linux远程来连接window服务器,并执行cmd命令。下面是我的解决方法:1、在Linux服务器上的处理…