zoukankan      html  css  js  c++  java
  • gcc,cc,g++,CC的区别

    ***gcc是C编译器;

    ***g++是C++编译器;

    ***linux下cc一般是一个符号连接,指向gcc

    ***gcc说明

    1.gcc编译常用格式:

        gcc  C源文件 -o 目标文件

        gcc -o 目标文件  C源文件

        gcc C源文件

    最后一种情况产生的目标文件默认为a.out

    2.gcc总体参数

    -c  只是编译不链接,生成目标文件

    -S  只是编译不汇编,生成汇编代码

    -E  只进行预编译

    -g 在可执行文件中包含调试信息(与下一篇的必须命令)

    -o file 把输出文件输出到file中

    -v 显示gcc的版本信息

    -I dir 在头文件的搜索路径中添加dir目录

    -L dir 在库文件的路径列表中添加dir目录

    -static 链接静态库

    -library 连接名问library的库文件

    3.gcc生成库流程

    gcc指令的一般格式如下:

    gcc [参数] 要编译的文件 [参数]  [目标文件]

    gcc编译流程:

    源代码(.c)->预处理(Pre-Processing)->编译(Compiling)->汇编(Assembing)->链接(Linking)->可执行文件

    具体命令如下:

    c文件用gcc的"-E"参数预处理,生成预处理“.i”文件,用gcc的“-S”参数编译,生成汇编“.s"文件,再用gcc的”-c“参数汇编,生成二进制”.o“文件,最后再用一次gcc把”.o“文件和一些链接库文件链接成可执行文件。

    我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:

    例:

    gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib

    多个文件合并创造一个程序时,就要再-o后,写上多个文件的文件名

    例:

     gcc -o json cJSON.c test.c

    GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名

    1。gcc包含的c/c++编译器
    gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什
    么意思:))一般c程序就用gcc编译,c++程序就用g++编译

    2。gcc的基本用法
    gcc test.c这样将编译出一个名为a.out的程序
    gcc test.c -o test这样将编译出一个名为test的程序,-o参数用来指定生成程序的名


    3。为什么会出现undefined reference to 'xxxxx'错误?
    首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说明你的程序源码本
    身没有问题,是你用编译器编译时参数用得不对,你没

    有指定链接程序要用到得库,比如你的程序里用到了一些数学函数,那么你就要在编译
    参数里指定程序要链接数学库,方法是在编译命令行里加入-lm。

    4。-l参数和-L参数
    -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文
    件名有什么关系呢?
    就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的
    头lib和尾.so去掉就是库名了。

    好了现在我们知道怎么得到库名了,比如我们自已要用到一个第三方提供的库名字叫lib
    test.so,那么我们只要把libtest.so拷贝到/usr/lib

    里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里
    的函数,我们还需要与libtest.so配套的头文件)。

    放在/lib/usr/lib/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件
    没放在这三个目录里,而是放在其他目录里,这时我们
  • 相关阅读:
    safari兼容时间格式 NAN
    高阶组件
    SqlBulkCopy与触发器,批量插入表(存在则更新,不存在则插入)
    SQL Server 触发器
    浅谈数据库中的触发器
    SQL Server 2008 表变量参数(表值参数)用法
    SQL Server 批量插入数据的两种方法
    SQL Server 2008 R2 主从数据库同步
    C#操作FTP, FTPHelper和SFTPHelper
    orcherd 汉化
  • 原文地址:https://www.cnblogs.com/orangezs/p/8378737.html
Copyright © 2011-2022 走看看