[C] gcc
概述
- GNU C Compiler
流程
- 预处理,生成.i文件(中间文件,看不到)
- 编译,生成.s文件(中间文件,看不到)
- 汇编,生成.o文件
- 链接,生成可执行文件
参数
- -E:预处理
- -S:预处理,编译
- -c:预处理,编译,汇编
- -o:预处理,编译,汇编,链接
- -g:生成调试信息
- -std=c99:支持c99标准
文件
- .c:c程序源代码
- .i:c程序预处理输出,可被编译
- .h:c程序头文件
- .s:汇编语言
- .S:有c命令的汇编语言,汇编前需进行预处理
- .a:静态链库
- .so:动态链库
命令
- gcc main.c:编译链接main.c(当前目录生成a.out)
- gcc main.c -o main.out:编译链接main.c(当前目录生成main.out)
- gcc main.c -o ./out/main.out:编译链接main.c(当前目录下的/out目录生成main.out)
- gcc -c main.c:编译main.c(生成main.o)
- gcc main.o:链接main.o(生成a.out)
- gcc main.o -o main.out:链接main.o(生成main.out)
- gcc main.c libfunc.so -o app.out:将 main.c 和 libfunc.so 一起编译成 app.out
[C] gcc的更多相关文章
- VSCode调试go语言出现:exec: "gcc": executable file not found in %PATH%
1.问题描述 由于安装VS15 Preview 5,搞的系统由重新安装一次:在用vscdoe编译go语言时,出现以下问题: # odbcexec: "gcc": executabl ...
- GCC学习(1)之MinGW使用
GCC学习(1)之MinGW使用 因为后续打算分享一些有关GCC的使用心得的文章,就把此篇当作一个小预热,依此来了解下使用GNU工具链(gcc.gdb.make等)在脱离IDE的情况下如何开发以及涉及 ...
- 使用 GCC 和 GNU Binutils 编写能在 x86 实模式运行的 16 位代码
不可否认,这次的标题有点长.之所以把标题写得这么详细,主要是为了搜索引擎能够准确地把确实需要了解 GCC 生成 16 位实模式代码方法的朋友带到我的博客.先说一下背景,编写能在 x86 实模式下运行的 ...
- [异常解决] How to build a gcc toolchain for nRF51 on linux (very detailed!!!)
1.Install gcc-arm-none-eabi https://devzone.nordicsemi.com/tutorials/7/This link shows that developm ...
- CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update.... yum install 或者 添加y ...
- GCC 预处理、编译、汇编、链接..
1简介 GCC 的意思也只是 GNU C Compiler 而已.经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言:它现在还支持 Ada 语言.C++ 语言.Java 语言.Objective ...
- 用gcc进行程序的编译
在Linux系统上,一个档案能不能被执行看的是有没有可执行的那个权限(x),不过,Linux系统上真正认识的可执行文件其实是二进制文件(binary program),例如/usr/bin/passw ...
- gcc/linux内核中likely、unlikely和__attribute__(section(""))属性
查看linux内核源码,你会发现有很多if (likely(""))...及if (unlikely(""))...语句,这些语句其实是编译器的一种优化方式,具 ...
- Ubuntu 14.04 LTS 下升级 gcc 到 gcc-4.9、gcc-5 版本
如果没记错的话,阿里云ECS上的Ubuntu也是LTS版本. 如果还在使用较旧版本的Ubuntu,或者是Ubuntu LTS,那么我们是很难体验新版gcc的.怎么办呢? 我们或许可以自己去编译用旧版本 ...
- 低版本GCC程序向高版本移植的兼容性问题
将低版本gcc编译过的程序移植到高版本GCC时, 可能会出现一些兼容性问题. 原因是, 为了适应新的标准,一些旧的语法规则被废弃了. 关于这方面的一些具体资料可从该处查询. 这里只是自己遇到的其中一个 ...
随机推荐
- Keepalived+Nginx高可用实例
Keepalived+Nginx高可用实例 注意事项: 1.VIP不需要在服务器网络配置文件中配置. 2.nginx主不可用时,需要kill掉nginx主的keepalived服务,这样才可以实现VI ...
- 深度学习---1cycle策略:实践中的学习率设定应该是先增再降
深度学习---1cycle策略:实践中的学习率设定应该是先增再降 本文转载自机器之心Pro,以作为该段时间的学习记录 深度模型中的学习率及其相关参数是最重要也是最难控制的超参数,本文将介绍 Lesli ...
- Python中切片的应用
Python中切片的应用 Python中可以通过切片实现对列表或者字符串取指定范围的操作,实际就是通过对列表或者字符串通过索引进行操作. 具体细节点击廖雪峰Python教程,其中的课后小问题在此记录下 ...
- Sqlmap的基础用法(禁止用于非法用途,测试请自己搭建靶机)
禁止用于非法用途,测试与学习请自己搭建靶机 sqlmap -r http.txt #http.txt是我们抓取的http的请求包 sqlmap -r http.txt -p username #指 ...
- Redis初学
1. redis 1. 概念 2. 下载安装 3. 命令操作 1. 数据结构 4. 持久化操作 5. 使用Java客户端操作redis Redi ...
- Spring Boot 2.3 新特配置文件属性跟踪
背景 当我们使用 spring boot 在多环境打包,配置属性在不同环境的值不同,如下: spring: profiles: active: @project.profile@ #根据maven 动 ...
- JavaScript 中对象解构时指定默认值
待解构字段为原始值 正常情况下, const obj = { a: 1, b: 2, }; const { a, b } = obj; console.log(a, b); // 1 2 当被解构字段 ...
- 防火墙双出口环境下私网用户通过NAPT访问Internet
组网图形 组网需求 如图1所示,某企业在网络边界处部署了FW作为安全网关,并分别从运营商ISP1和ISP2处购买了宽带上网服务,实现内部网络接入Internet的需求. 具体需求如下: 研发部门和市场 ...
- create-react-app 核心思路分析
原文链接:http://axuebin.com/articles/fe-solution/cli/cra.html,转载请联系 Create React App is an officially su ...
- android dalvik浅析一:解释器及其执行
dalvik是android中使用的虚拟机,基于寄存器,分析基于android4.2源代码.本篇主要分析的是dalvik中的解释器部分,源码位于/dalvik/vm,主要代码在interp和mterp ...