GCC编译器编译链接
在gcc编译器环境下,常见的文件扩展名的含义如下:
.c:C源程序,经过预编译后的源程序也为.c文件,它可以通过-E参数输出。
.h:头文件
.s:经过编译得到的汇编程序代码,它可以通过-S参数输出。
.o:目标文件
.a:函数库
Gcc编译器常见语法:
-c:只进行编译,不进行链接,输出的是与源文件同名的.o文件。
-o:指定生成的文件的名称。链接生成可执行文件,这个参数后可以带可执行文件的名字,如果没有指定可执行文件的名字,则会默认为a.out。
-S:输出汇编代码文件,输出一个与源文件同名的.s文件,这个文件中的内容为汇编程序。
-O:在编译链接的过程中进行优化,在编译过程中对代码进行优化,代码经过优化后再利用汇编程序翻译成目标代码。
Eg.
只对程序进行编译:
gcc –c –O –I dirname x.c
其中-c是编译x.c,-O是对代码进行优化,-I是指x.c所使用的头文件啊在目录dirname中。如果只使用了系统头文件/usr/include则不用特意指定。
对编译产生的x.o文件进行链接:
gcc –L dirname –lyyy x.o –o x
其中-L指链接过程中要使用的函数库libyyy.a(-lyyy说明要使用函数库libyyy.a)在目录dirname中。 如果是使用系统库则不用特意指出/usr/lib和/lib。-o x指定了可执行文件的名称。
Eg.编译运行hello world
出现如下错误:

错误原因:不能同时使用-c 和-o,那么生成hello.o和可执行文件hello要分两步进行即编译和链接要分开操作。
记得要分开操作:

如果要生成hello.o,还可以使用命令gcc –c hello.c –o hello.o
编译链接还可以直接使用gcc –o hello hello.c

如果直接编译hello.c结果如下,生成一个名称为a.out的执行文件:

可以利用-o给执行文件命名:

GCC编译器编译链接的更多相关文章
- C语言_来了解一下GCC编译器编译C可执行脚本的过程
GCC简介 Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.gcc是可以在多种硬体平台上编译出可执行程序的超级编译 ...
- 通过GCC编译器编译c语言
GCC编译C源代码的四个步骤 GCC编译C源代码有四个步骤:预处理---->编译---->汇编---->链接. 可以利用GCC的参数来控制执行的过程,这样就可以更深入的了解编译C程序 ...
- 【C编程基础】C编译链接命令gccc
1.gcc安装 rpm -qa|grep gcc ==>检查gcc是否安装 gcc -v ==>检查gcc版本 yum -y install gcc ==>安装gcc 2.基本语法 ...
- Keil5.15使用GCC编译器链接.a库文件
我们知道,当使用第三方的代码时,人家有可能会扔个Lib文件给你.这时候,别人仅仅要提供header文件给你,则你就能够通过Lib文件及header的函数声明,对Lib中的函数进行调用.在Keil中假设 ...
- [转]C++编译链接过程详解
C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接.编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程.链接是把目标文件.操作 ...
- gcc编译器如何生成指定的文件名
放哪里都可以,进到文件所放路径,用gcc编译器编译.如:gcc -o test test.c 就是说把test.c文件编译链接生成test可执行程序.在linux下生成test.out,然后再命令:. ...
- gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解
摘自http://blog.csdn.net/elfprincexu/article/details/45043971 gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解 C和C+ ...
- 利用GCC编译器生成动态链接库和静态链接库
转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码. ...
- C++常见gcc编译链接错误解决方法
除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词): 用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdy ...
随机推荐
- Oracle logmnr工具分析日志脚本
在oracle:对logmnr工具分析日志这个不陌生:对数据恢复应用场景经常用到:这里为了方便对归档日志进行分析: 当然网上有一个logmnr界面的工具:感觉很人性化:下载需要积分:为此写一个脚本. ...
- python : HTML+CSS (左侧菜单)
左侧菜单 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3 ...
- 【转】 #1451 - Cannot delete or update a parent row: a foreign key constraint fails 问题的解决办法
转载地址:http://blog.csdn.net/donglynn/article/details/17056099 错误 SQL 查询: DELETE FROM `zmax_lang` WHERE ...
- App.xaml.cs
using System.Windows; namespace HelloWorld { /// <summary> /// Interaction logic for App.xaml ...
- JS闭包导致循环给按钮添加事件时总是执行最后一个
加入如下脚本代码: <script> var list_obj = document.getElementsByTagName('li'); for (var i = 0; i <= ...
- 【Linux命令与工具】系统资源查看——free、uname、dmesg以及netstat
free:查看内存的使用情况 用法: free [-b|-k|-m|-g] [-t] 参数: -b: 直接输入free时,显示的单位是KB我们可以使用b(bytes), m(MB), k(KB), g ...
- 仿souhu页面设计
仿搜狐页面设计 Html页面设计代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...
- 关于行内元素的margin padding一些说明;background-color的范围
①当对行内元素使用padding时,只有左右方向(正常)有效:竖直方向上,内边距对于该行内元素有效果,但是对其他元素无任何影响. ②当对行内元素使用margin时,只有左右方向有效,竖直方向无任何效果 ...
- ASP.Net系列教程
Getting Started with ASP.NET MVC This is a beginner tutorial that introduces the basics of ASP.NET M ...
- 和Java相关的一些好文章(不定期更新)
1.Java 集合类详解 (包括arraylist,linkedlist,vector,stack,hashmap,hashtable,treemap,collection等). 2.Java 理论与 ...