精华内容
下载资源
问答
  • GCC编译命令

    2016-12-30 15:32:48
    GCC编译命令

    1.GCC编译过程:


    2.GCC编译命令:

    gcc hello.c -o hello
    ------------------------------------------
    预处理: gcc -E hello.c -o hello.i
    编  译: gcc -S hello.i -o hello.s
    汇  编: gcc -c hello.s -o hello.o
    链  接: gcc hello.o -o hello
    ------------------------------------------
    文件属性: file hello
    hello: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped


    展开全文
  • gcc 编译命令

    2020-03-21 18:15:45
    文章目录gcc 编译命令 gcc 编译命令 预处理 # 直接输出 gcc -E test.c -o test.i # 重定向输出 gcc -E test.c > test.i 编译生成汇编代码 gcc -S test.i -o test.s 汇编器生成可重定位目标文件 gcc -c ...

    文章目录

    gcc 编译命令

    • 预处理
    # 直接输出
    gcc -E test.c -o test.i
    # 重定向输出
    gcc -E test.c > test.i
    
    • 编译生成汇编代码
    gcc -S test.i -o test.s
    
    • 汇编器生成可重定位目标文件
    gcc -c test.s -o test.o
    
    • 链接器生成可执行目标文件
    gcc test.o -o test.out
    
    • 显示警告
    gcc -Wall test.c -o test.out
    
    展开全文
  • gcc编译命令

    2012-10-29 16:01:47
    gcc编译命令 详细解析
  • GCC 编译命令

    2016-10-09 16:43:00
    今天突然被同事问道一个GCC编译命令的问题,感觉对相应内容生疏了,赶紧整理下相关内容,梳理下相关知识。 GCC命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习...

    今天突然被同事问道一个GCC编译命令的问题,感觉对相应内容生疏了,赶紧整理下相关内容,梳理下相关知识。

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

    一. 常用编译命令选项

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

    1. 无选项编译链接
    用法:#gcc test.c
    作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

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

    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。

    7. 选项-O
    用法:#gcc -O1 test.c -o test
    作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

    二. 多源文件的编译方法

    如果有多个源文件,基本上有两种编译方法:
    [假设有两个源文件为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

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

    3库文件连接

    开发软件时,完全不使用第三方函数库的情况是比较少见的,通常来讲都需要借助许多函数库的支持才能够完成相应的功能。从程序员的角度看,函数库实际上就是一些头文件(.h)和库文件(so、或lib、dll)的集合。。虽然Linux下的大多数函数都默认将头文件放到/usr/include/目录下,而库文件则放到/usr/lib/目录下;Windows所使用的库文件主要放在Visual Stido的目录下的include和lib,以及系统文件夹下。但也有的时候,我们要用的库不再这些目录下,所以GCC在编译时必须用自己的办法来查找所需要的头文件和库文件。

    例如我们的程序test.c是在linux上使用c连接mysql,这个时候我们需要去mysql官网下载MySQL Connectors的C库,下载下来解压之后,有一个include文件夹,里面包含mysql connectors的头文件,还有一个lib文件夹,里面包含二进制so文件libmysqlclient.so

    其中inclulde文件夹的路径是/usr/dev/mysql/include,lib文件夹是/usr/dev/mysql/lib

     

    3.1编译成可执行文件

    首先我们要进行编译test.c为目标文件,这个时候需要执行

    gcc –c –I /usr/dev/mysql/include test.c –o test.o
    3.2链接

    最后我们把所有目标文件链接成可执行文件:

    gcc –L /usr/dev/mysql/lib –lmysqlclient test.o –o test

    Linux下的库文件分为两大类分别是动态链接库(通常以.so结尾)和静态链接库(通常以.a结尾),二者的区别仅在于程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。

    3.3强制链接时使用静态链接库

    默认情况下, GCC在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库,如果需要的话可以在编译时加上-static选项,强制使用静态链接库。

    在/usr/dev/mysql/lib目录下有链接时所需要的库文件libmysqlclient.so和libmysqlclient.a,为了让GCC在链接时只用到静态链接库,可以使用下面的命令:

    gcc –L /usr/dev/mysql/lib –static –lmysqlclient test.o –o test

     

    静态库链接时搜索路径顺序:

    1. ld会去找GCC命令中的参数-L
    2. 再找gcc的环境变量LIBRARY_PATH
    3. 再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的

    动态链接时、执行时搜索路径顺序:

    1. 编译目标代码时指定的动态库搜索路径
    2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
    3. 配置文件/etc/ld.so.conf中指定的动态库搜索路径
    4. 默认的动态库搜索路径/lib
    5. 默认的动态库搜索路径/usr/lib

    有关环境变量:
    LIBRARY_PATH环境变量:指定程序静态链接库文件搜索路径
    LD_LIBRARY_PATH环境变量:指定程序动态链接库文件搜索路径

    转载于:https://www.cnblogs.com/ibyte/p/5828445.html

    展开全文
  • Ubuntu和gcc编译命令

    2020-12-23 22:56:37
    Ubuntu和gcc编译命令
  • GCC编译命令 Gcc命令行详解 Gcc命令行详解 Gcc命令行详解
  • gcc 编译命令的入门知识,有想去的朋友可以下载阿
  • gcc 编译命令整理

    2019-05-08 10:51:06
    常用编译命令选项 假设源程序文件名为test.c。 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。 选项 -o 用法:#gcc test.c ...

    一. 常用编译命令选项
    假设源程序文件名为test.c。

    1. 无选项编译链接
      用法:#gcc test.c
      作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

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

    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。

    7. 选项-O
      用法:#gcc -O1 test.c -o test
      作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

    二. 多源文件的编译方法

    如果有多个源文件,基本上有两种编译方法:
    [假设有两个源文件为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

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

    1. 如果要编译的文件都在同一个目录下,可以用通配符gcc *.c -o 来进行编译。

    你是否会问,如果是一个项目的话,可能会有上百个文件,这样的编译法,人不是要累死在电脑前吗,或者等到你编译成功了,岂不是头发都白了,呵呵,所以我们要把上述的编译过程写进以下一个文本文件中:
    Linux下称之为makefile
    #这里可以写一些文件的说明
    MyFirst: MyFirst.o hello.o
    g++ MyFirst.o hello.o -o MyFirst
    Hello.o:Hello.cpp
    g++ -c Hello.cpp -o Hello.o
    MyFirst.o:MyFirst.cpp
    g++ -c MyFirst.cpp -o MyFirst.o
    makefile 编写规则:
    (1)以“#”开始的行为注释
    (2)文件依赖关系为:
    target:components
    rule
    存盘为MyFirst,在终端输入:make MyFist,程序出现了错误可是所有程序员共同的敌人,在编写程序时我们应该尽量的去避免错误的出现,不过编写的时候再怎么都不可避免的出现这样那样的错误,对程序 进行必要的调试是一个好主意,那我们怎么来调试程序呢,看下面:
    gdb ./文件名 在这里我修改下要想下面可以调试,在上面编译的 时候必须加上参数g,g++ -g hello.cpp -o hello
    以下为调试状态下的可以用到的命令(可以仅输入单词的输入,如break可简为b),尖括号中为说明
    list <显示源代码>
    break 行号 <设置断点>
    run <运行程序>
    continue <继续从断点处执行>
    print 变量 <调试时查看变量的值>
    del 行号 <删除断点>
    step <单步执行,可跟踪到函数内部>
    next <单步执行,不可跟踪到函数内部>
    quit <退出>
    makefile 的编写不是件容易的事情,因为自己写的makefile可能不能在所有的unix/linux类操作系统下通用。因此在很多项目中都用automake.autoconf或者是Cmake等工具。

    展开全文
  • gcc编译一个c文件的过程,会经过几个步骤:预编译,编译,汇编,链接。下面是每一步用到的参数和命令: -E:预编译, 讲带#的语句重新展开到制定文件中,比如#define, #include "*.h" gcc -E main.c -o main.i ...
  • Linux gcc编译命令

    万次阅读 2018-11-19 19:40:57
    编译、链接 和运行C程序 编写一个C程序 用 touch 命令:“touch 文件名” 可以创建一个文件(比如 touch hello.c),如下图:
  • gcc编译命令说明

    2015-01-23 14:15:15
    ※预处理(preprocessing),编译(compilation),汇编(assembly)和连接...当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib() 写在specs内的 后来用-D -I -L指定的 gcc环境变量设定(编译的时候) ld.so的环境变量
  • GCC 编译命令笔记

    2011-09-03 10:29:57
    1. 将C文件编译并链接为可运行文件: gcc -o hello hello.c -I/usr/include(引用头文件位置) 2. 编译文件: gcc -c hello.c 3. 需要链接库: gcc -o hello hello.c /usr/lib/libm
  • Binutils源码工具包中的常用命令gcc g++ ld ldd nm strings readelf addr2line strip  objcopy as ar gdb   1、gcc/g++编译器 示例: gcc -c test.c gcc -o test test.c gcc -E -o test.i test.c gcc -g -o ...
  • gcc编译命令实用

    千次阅读 2010-07-18 10:23:00
      基本规则  gcc所遵循的部分约定规则: .c为后缀的文件,C语言源代码文件; .a为后缀的文件,是由目标文件构成的档案库文件; .C,.cc或.cxx 为后缀的文件,是C++源代码文件; .h为后缀的文件,...
  • 1、由cpp或者c编译为二进制 代码 #include using namespace std; int main() { cout; return 0; } 编译脚本 g++ a.cpp -o hello g++ a.cpp 或者 错误范例 g++ -c a.cpp -o hello
  • 最简单的编译指令为: gcc hello.c -o hello -o后面跟着的是输出文件名,这里为hello,当然也可以省略不写,这样的话默认输出 a.out -l参数和-L参数 这是经常遇到的两个参数 ,先说-l -l参数(小写l(mln的...
  • gcc 编译命令选项$@ $^ $

    千次阅读 2018-10-10 14:59:59
    一些常见的自动化变量说明如下: (1) $@ ——目标文件的名称; (2) $^ ——所有的依赖文件,以空格分开,不包含重复的依赖文件; (3) $&lt; ——第一个依赖文件的名称。... gcc -o main main.o hell...
  • 1.直接编译一个test.c文件  gcc -EL test.c -o test  生成test是可执行文件.   2.只生成.o文件,为打包生成库文件准备  gcc -c hello.c  生成hello.o的目标文件.   3.生成静态库文件  ar -r libhello...
  • gcc编译命令----小话c语言(14)

    千次阅读 2012-05-19 22:23:14
    [Mac 10.7.1 Lion Intel-based x64 gcc 4.2.1] Q: 如何让编译的文件可以被gdb调试? A: 可以加入-g参数。如下代码,保存为hello.c:  #include int main() ...}编译 gcc hello.c -o he
  • GCC编译常用命令

    万次阅读 多人点赞 2018-05-05 23:45:02
    GCC 编译命令 ----------------加入新公司后,基本上是一键式打包脚本,对于GCC基本上快忘了,重新拾起。GCC命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习...
  • gcc 编译命令 最简单的编译命令是:gcc main.c 默认生成的可执行文件是 a.out,如果需要指定输出文件,则需要使用如下的命令:gcc main.c – o main 使用-Wall 选项可以输出所有的警告信息: gcc -Wall main.c -o main ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,719
精华内容 4,287
关键字:

gcc编译命令