编译小结(2) GCC常见用法及技巧

    这里把编译时常用的一些集中起来,方便查找。

例1.最简单的编译例子。
默认是编译成32位程序
    gcc -o xcl test.c 
编译成64位:
    gcc -m64 -o xcl test.c

各系统编译64位程序开关如下:
AIX   64BIT -maix64 
HP-UX 64bit -mlp64
Solaris 64bit -m64
Linux 64bit -m64


例2.如果想要能用gdb调试程序,可参考下面的命令行:
gcc -m64 -Wall -O -g -o xcl test.c
参数说明:
-Wall  输出所有的警告信息。
-O     在编译时进行优化。
-g     表示编译debug版本。


例3.高低版本发布兼容性处理.
如在RHEL6之类高版本系统上编译,但程序要发布到低版本RHEL4之类的系统上运行,
思考可能会因为glibc版本太低出现Floating Point Exception运行时错误,
可以在编译时加上参数"--hash-style=sysv"来解决
gcc -m64 -Wall -O -g -Wl, --hash-style=sysv -o xcl test.c


例4.如在代码中引用了其它文件,如other.c。则在编译时要将其加进去。    
  gcc -m64e -o xcl test.c other.c
  小技巧,当不能确定时,可以用 gcc -MM test.c 查出相依赖的.h文件,就能找到相关的.c文件了。
  这招也可用在写Makefile时。


例5.如引用到其它的lib或.h头文件
  gcc -m64 -Lcompenv/lib -ldemo -Icompenv/include  -o xcl test.c
   参数说明:
    -Lcompenv/lib  引用了当前compenv目录下lib目录中的库文件
    -ldemo   编译时要链接当前compenv目录下lib中的libdemo.so动态链接库。
                   注意Unix/Linux下动态的命令规则为: “lib”开头“.so”结尾。
    -Icompenv/include  引用了compenv目录下lib目录中的.h文件


    除了"-I"指定头引用的文件目录,还可以用"CPATH"环境变量完成相同功能。
    export CPATH=$CPATH:/xcl/test/include
    指定后,就不要在gcc时指定"-I"参数了.


 例6.gcc编译器对新标准的支持,要注意。只有在编译时指定-std参数,才能正确的编译新特性。   
    //c99标准
  gcc -std=c99  -m64 -o xcl test.c
  //C++ 11标准
  g++ -std=c++11  -m64 -o xcl test.cpp
  注意c是小写,不要弄混了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值