首页 > 其他 > 详细

MingGW编译命令

时间:2019-08-18 13:27:13      阅读:95      评论:0      收藏:0      [点我收藏+]

1.gcc与g++的区别

  (1) 都可以用于编译.c或.cpp文件;

  (2) gcc将.c文件当成C程序,g++将.c文件当成C++程序;

  (3) g++的语法检测更严格一些;

  (4) 对于cpp文件,gcc与g++在编译阶段是等价的,g++会调用gcc;

  (5) 链接由g++完成,由两种方式:g++ 或 gcc -lstdc++

2.编译过程

(1)预处理

     展开所有的以#开始的预编译指令,过滤注释,加入行号,引入头文件,生成*.i文件

     g++ -E hello.cpp -o hello.i

(2)编译

     进行词法分析、语法分析、语义分析、优化后产生相应的汇编文件*.s

     g++ -S hello.i -o hello.s

(3)汇编

      将编译文件*.s通过AS汇编成目标文件*.o

(4)链接

     把一些指令对其它符号地址的引用加以修正,包括地址和空间分配、符号决议、重定位等过程,将目标文件和库一起链接形成最终可执行文件.

3.常见编译命令

(1)静态库编译与使用方法

       1) 将相关*.cpp生成*.o文件

g++ -C *.cpp

       2) 由*.o文件创建静态库*.a文件

ar cr libXXX.a A.o B.o C.o

       3) 显示静态库中的目标文件

ar tv libXXX.a

       4) 使用静态库文件

g++ -o targetName  *.cpp -L. -lXXX.a

4.动态链接库编译与使用方法:

     (1)将cpp生成.o文件

         g++ -fPIC -o A.o -c A.cpp

         g++ -fPIC -o B.o -c B.cpp

    (2)由*.o文件创建动态库

           g++ -shared -o libXXX.so A.o B.o

    (3)一句话搞定

           g++ -fPIC -shared -o libXXX.so A.cpp B.cpp

5.编译参数说明

     (1) -fPIC 编译为独立位置的代码,必须添加,否则无法实现代码段共享;

     (2) -Lpath 表示在path目录搜索库文件,-L.表示当前目录;

     (3) -Ipath 表示在path目录搜索头文件;

     (4) -ltest  表示要链接的库名,表示依赖libtest.so

 

MingGW编译命令

原文:https://www.cnblogs.com/coderbase/p/11371797.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!