一:编译过程的4个阶段:预处理,编译,汇编,链接; 1:最常用的方式 gcc hello.c -o hello 2:预处理后停止编译 gcc -E hello.c -o hello.i(.i通常为已经预处理过的C原始程序) 3:将hello.i编译为目标代码,可以使用-c参数来完成 gcc -c hello.i -o hello.o 也可以使用-x参数让gcc从指定的步骤开始. 4:将生成的目标文件链接成可执行文件 gcc hello.o -o hello 5:多个源文件时 gcc f1.c f2.c -o file 二:gcc参数的警告提示功能 1:-pedantic 使用了ANSI/ISO C语言扩展语法的地方将产生相应的警告信息 2:-Wall   产生尽可能多的警告信息,建议始终带上 3:-Werror  将所有的警告当成错误进行处理 三:库依赖 函数库实际上就是一些头文件和库文件的集合. -I选项向gcc的头文件搜索路径中添加新的目录 -L选项向gcc的库文件搜索路径中添加新的目录 -l指定链接的库文件名,如 -ldavid 表示指示gcc去连接库文件libdavid.so -static强制使用静态链接库 动态库文件(.so)和静态库文件(.a)的区别在于程序执行时所需的代码是运行时动态加载的,还是编译时静态加载的.gcc优先使用动态库 四:其他 -On 控制优化代码的生成,n是一个代表优先级别的整数;n取0~3;-O相当于-O1; -O1 减小代码的长度和执行时间,一般包括线程跳转(Thread Jump)和延迟退栈(Deferred Stack Pops); -O2 在O1基础上,进行一些额外调整,如处理器指令跳转; -O3 在O2基础上,循环展开一些其他和处理器特性相关的优化工作; -pipe:管道,它可以用来同时连接两个程序,其中一个程序的输出将直接作为另一个程序的输入,这样就可以避免使用临时文件,提高编译速度,但编译时消耗更多的内存. -Dmacro 定义指定的宏,使它能够通过源码中的#ifdef进行检验 -g3   获得有关调试程序的详细信息 -S   要求编译程序生成来自源代码的汇编程序输出 -v   启动所有报警 -w   禁止所有报警 五:常见错误类型 1:syntex error,语法错误 2:can't find include file,头文件错误 3:ld:lm:No such file or directory,找不到所需的函数库 4:Undefined symbol未定义符号:源代码文件未被包含或编译。

gcc-常见命令和错误的更多相关文章

  1. GCC常见命令汇总

    int main() { test(); } man.c如上: #include <stdio.h> void test() { printf("test\n"); } ...

  2. GCC常见命令

    rwx 对于目录和文件的区别 文件 目录 r 文件的内容可以被查看.支持cat.more.head...vim 目录的内容可以被查看.ls.tree w 文件的内容可以被添加.修改.删除.vim &g ...

  3. 嵌入式Linux开发教程:Linux常见命令(上篇)

    摘要:这是对周立功编著的<嵌入式Linux开发教程>的第7期连载.本期刊载内容有关LinuxLinux常见命令中的导航命令.目录命令和文件命令.下一期将连载网络操作命令.安装卸载文件系统等 ...

  4. 总结Selenium自动化测试方法(六)常见的异常错误处理

    六.常见的异常错误处理 NoSuchElementException: Message: Unable to locate element: {"method":"xpa ...

  5. Linux常见命令(四)——mkdir

    今天我们来介绍第四个命令:mkdir.mkdir (Make Directory 创建目录): 若指定目录不存在则创建目录.在创建目录时,要求创建目录的用户具有写权限,并应保证新建的目录没有重名. 用 ...

  6. Linux常见命令(五)——rmdir

      前  言 JRedu 今天我们来介绍第五个命令:rmdir . 命令英文原意:remove empty directories 命令用途: rmdir:删除空目录,非空的目录不能删除 本章内容将详 ...

  7. gcc/g++ 命令的经常使用选项

    gcc/g++ 命令的经常使用选项格式(选项 解释) -o FILE 指定输出文件名称.在编译为目标代码时,这一选项不是必须的.假设FILE没有指定,缺省文件名称是a.out. -c 仅仅编译生成目标 ...

  8. 6种常见的Git错误以及解决的办法

    我们都会犯错误,尤其是在使用像Git这样复杂的东西时.如果你是Git的新手,可以学习如何在命令行上开始使用Git.下面介绍如何解决六个最常见的Git错误. Photo by Pawel Janiak  ...

  9. Windows Server 2008R2常见的500错误

    每次公司服务器装系统后再去部署服务,都会碰到这个问题,这里记录一下问题的解决方法 遇到“500 – 内部服务器错误. 您查找的资源存在问题,因而无法显示.”的问题. 解决办法: 1.解决方法:打开II ...

  10. GCC编译命令常用选项

    GCC是GUN Compiler Collection的简称,除编译程序外,还包含其他相关工具.GCC可将高级语言编写的源代码构建成计算机直接执行的二进制代码.GCC是Linux平台下最常用的编译程序 ...

随机推荐

  1. JavaEE SSH框架整合(四) 日志处理Spring结合 log4j、slf4j [转]

    1. 加入log4j和slf4j的jar包 2. web.xml: <context-param> <!--log4j配置地址 --> <param-name>lo ...

  2. Java类的成员函数调用顺序

    class A { public A() { System.out.println("----------A 构造-------------"); } static void sb ...

  3. Android的学习——ubuntu下android5.1源码的make编译

    在repo sync下载源码后,经历了漫长的时间,终于可以进行下一步了. 在进行make之前还需要三个步骤. 1> source build/envsetup.sh:加载命令          ...

  4. leetcode N-Queens/N-Queens II, backtracking, hdu 2553 count N-Queens, dfs 分类: leetcode hdoj 2015-07-09 02:07 102人阅读 评论(0) 收藏

    for the backtracking part, thanks to the video of stanford cs106b lecture 10 by Julie Zelenski for t ...

  5. 从0到1---“保多多”APP的开发(一)

    2015年8月份,我正式接手了公司保多多APP的开发(和另一个同事一起). 我之前并没有过从0开始创建一款APP,这次能有这样的机会,实在让我感到兴奋.因为我相信,作为这款APP的主要开发人员,在这一 ...

  6. qgroundcontrol开发环境搭建源码编译

    qgroundcontrol是一款无人机地面站开源软件,C++/QT开发 在https://github.com/mavlink/qgroundcontrol上就能找到,选择稳定版下载最新的是2.6 ...

  7. Padding Oracle Attack的一些细节与实现

    Padding Oracle Attack还是颇具威力的,ASP.NET的Padding Oracle Attack被Pwnie评为2010年最佳服务端漏洞之一.还是看 Juliano Rizzo a ...

  8. 初学web开发——怎么解决无法找到路径的问题

    刚刚接触web开发一个月,在接手项目时,总会出项无法找到改路径的问题, 那么,这个是什么原因造成的呢?因为我现在使用的是MVC架构,大部分的原因是在View里创建了视图,但是并未在controller ...

  9. system_call的处理过程

    一. 跟踪time系统调用 使用gdb调试跟踪系统调用内核函数sys_time 过程如下: 对sys_time设置断点之后,在menuOS中执行time命令,发现系统停在systime处,输入S单步执 ...

  10. xcode armv6 armv7 armv7s arm64

    目前ios的指令集有以下几种: armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone ...