Linux C 程序 空语句-gcc编译命令(SIX)
C语言语句
1.空语句:当一个if或者while判断部分能完成工作,空语句可以用来表示if或者while内的空循环体
if(a == b );
2.gcc编译器
//程序的编译过程:
// 预处理:pre-processing
// 编译:compiling
// 汇编:assembling
// 链接:linking
//预处理阶段:*.c或者*.C文件会预处理成*.i文件 ,这个阶段主要处理#ifdef #include #define
命令:gcc -E test.c -o test.i
//编译阶段 :输入*.i文件,编译生成汇编文件*.s
命令:gcc -S test.i -o test.s
//汇编阶段 ,将*.s 变成*.o二进制文件
命令:gcc -c test.s -o test.o
//链接阶段:将*.o二进制文件汇聚成一个可执行的文件
命令:gcc test.o -o test
//上述过程可以简述为:
命令:gcc -c test.c -o test.o
gcc test.o -o test
或者:
gcc test.c -o test
3.gcc常用选项;
//同时编译多个*.c文件 命令:gcc -o test file1.c file2.c file3.c //三个文件编译后生成test可执行文件,注意三个文件只能有一个允许有main函数,如果是仅仅编译目标文件,那可以没有main函数。
4.gcc最基本的用法:
//-c 只编译,不连接成可执行文件 //-o output_filename 确定输出的文件名 //-g 产生调试器gdb必须的符号,要对源码进行调试,必须在编译的时候加这个参数 //-O 对程序进行优化编译连接,但是编译会相对慢一些 //-O2 比-O更好的优化编译,但是编译连接会更慢 //-Wall 输出所有警告信息 //-w 关闭所有警告,建议不要使用此选项 //IDirname ,将名为IDirname的目录加入到程序头文件目录列表中,预处理阶段使用的选项 //C语言头文件会被大量使用,通常是 Header files 和定义文件 definition files 组成。 //头文件包含函数原型声明,常量定义的文件,用于保存程序的声明 //定义文件用于保存程序的实现implementation。 //头文件以.h为后缀 #include<stdio.h> //去系统预设的包含文件目录去找 一般是系统提供的头文件 系统预设的包含目录为 /usr/include #include "stdio.h" //先到当前目录去找,再到指定的IDirname去找 自己写的一般放在当前目录,大型程序会统一放在一个目录 //-L dirname 将名为dirname的目录加到程序库文件的搜索目录中,在连接过程中使用的参数。
5.系统提供的库分为两种:静态库和动态库
gcc默认的库文件存放目录 /usr/lib
6 问题:
1.写出float与0比较的语句
//由于float精度的问题不可写成: if(x == 0.0); if(x != 0.0); //应该写成: if(x >= -0.00001 && x <= 0.00001); //不可将浮点型变量用 == 或者 !=比较,设法转换成 <= 和 >=
2.switch 条件必须是整型和char
3.for(;1;)是一个死循环
Linux C 程序 空语句-gcc编译命令(SIX)的更多相关文章
- GCC 编译命令
今天突然被同事问道一个GCC编译命令为的问题,感觉对相应内容生疏了,赶紧整理下相关内容,梳理下相关知识. GCC命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再 ...
- GCC编译命令常用选项
GCC是GUN Compiler Collection的简称,除编译程序外,还包含其他相关工具.GCC可将高级语言编写的源代码构建成计算机直接执行的二进制代码.GCC是Linux平台下最常用的编译程序 ...
- Linux——【转】gcc编译与gdb调试简要步骤
原文:gcc编译与gdb调试简要步骤 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定义和include文件展开等工作:(.i) l 根据编译参数进行不同程 ...
- Linux(CentOS 7)使用gcc编译c,c++代码
安装gcc: 1.使用 yum -list gcc* 查询 centos 官方gcc的所有包: 可安装的软件包 gcc.x86_64 gcc-c++.x86_64 gcc-gfortran.x86_6 ...
- Linux环境下使用gcc编译,gdb反汇编C语言程序
使用虚拟机 VMware Workstation 10 Linux环境:Ubuntu 14.04 LTS Server amd64 我把过程截图如下. 首先是hello world程序: 备注: ...
- gcc编译命令行依赖库的指定顺序
gcc链接过程中定义了三个集合:可重定位目标文件集合E.未解析符号集合U和已定义符号集合D,链接基本流程如下: 1) 按命令行指定顺序依次处理每个目标文件和库文件: 2) 如果为目标文件,将其加入集合 ...
- Linux 设置程序开机自启动 (命令systemctl 和 chkconfig用法区别比较)
之前在Linux centos 7 上安装了apache 和mysql,当时并没有设置开机自动启动. 最近又重新练习网页,每次开机总是要手动启动httpd和mysqld,不方便,就想设置成开机自动启动 ...
- gcc编译命令总结
一步到位编译:gcc hello.c -o hello 预处理 -E (.i) 编译 -S (.s) 汇编-c (.o) 连接-o 预处理 gcc -E hello.c -o hello.i -E:仅 ...
- gcc编译命令
g++ demo.cpp -o demo.exe
随机推荐
- (DP6.1.2.1)UVA 147 Dollars(子集和问题)
/* * UVA_147.cpp * * Created on: 2013年10月12日 * Author: Administrator */ #include <iostream> #i ...
- OC语言--NSFileManager& NSFileHandle
1.关于文件的介绍 ->什么是文件: 文件概念, 广义文件. 狭义文件(磁盘文件). 文件常见的使用操作(可用命令行演示文件操作的使用场景). ->什么是路径: 简单来说就是,在系统中,要 ...
- C++在使用Qt中SLOT宏须要注意的一个小细节
大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类假设覆写,在基类指针或者引用来指向子类的时候会实现动态绑定. 但假设指针去调用非虚函数,这个时候会调用C++的静态绑定,去推断当前的指针是 ...
- 微信公众平台java开发详解(工程代码+解析)
原文:http://blog.csdn.net/pamchen/article/details/38718947 说明:本次的教程主要是对微信公众平台开发者模式的讲解,网络上很多类似文章,但很多都让初 ...
- VMware:虚拟机磁盘空间不足怎么办
前言: 虚拟机里一般我们用的虚拟磁盘,在电脑上是一个或多个文件,随着软件和数据的增多,有时也会提示磁盘空间不足. 那么,虚拟机磁盘空间不足如何处理呢? 一:调整磁盘分区大小; 若只是提示相应磁盘分 ...
- java_jdbc_反射技术将查询结果封装为对象
package cn.itcast.Reflect; import java.lang.reflect.InvocationTargetException; import java.lang.refl ...
- Making Use of Forms and Fieldsets
Making Use of Forms and Fieldsets So far all we have done is read data from the database. In a real- ...
- 万能的Entry,两个变量的Model/JavaBean再也不用写了!
前言 很多时候传数据需要只含两个变量的Model/JavaBean,但就为了两个变量去写一个Model/JavaBean实在是麻烦,而且类型固定重用性低.比如: 1.网格显示的头像-名称 需要 Str ...
- Unix 网络编程(2)——TCP API
TCP C/S套接口函数一般调用过程及基本函数 如上图所示的TCP连接的基本过程.一般来说,服务器先于客户端运行,服务器程序运行的基本过程是: socket()函数创建服务器段socket. bind ...
- SQL Server用存储过程新建视图
CREATE PROCEDURE [dbo].[p_GetV_view]ASBEGIN DECLARE @sqlstr1 varchar(255) DECLARE @sqlstr2 varchar(2 ...