g++操作集锦

  |  

摘要: 本文整理 g++ 中常见的操作,持续更新

【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:潮汐朝夕
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


gcc 与 g++ 分别是 GNU 的 c 和 c++ 编译器。gcc/g++ 在执行编译的时候一般有下面4步:

  1. 预处理,生成 .i 的文件【预处理器】。
  2. 将预处理后的文件转换成汇编语言,生成文件.s 【编译器】。
  3. 由汇编变为目标代码(机器代码)生成 .o 的文件 【汇编器】。
  4. 连接目标代码,生成可执行程序【链接器】。

基础选项

生成可执行文件

编译链接,默认生成 a.out 可执行文件:

1
g++ test.cpp

链接,将 test.o 和 main.o 链接起来,生成 test 可执行文件:

1
g++ test.o -o test -L main.o

生成目标文件

生成 .o 的目标文件。

1
g++ -o test.o test.cpp

预处理

生成 test.i 预处理文件。

1
g++ -E test.cpp > test.i

生成汇编文件

生成 .s 汇编文件,里面是汇编指令。

1
g++ -S test.cpp

目录选项

指定 Include 目录

#include 的时候,gcc/g++ 会在当前目录查找所制定的头文件,如果没找到,回到缺省的头文件目录找。

如果使用 -I 指定了目录,则会先在指定的目录找,再按常规顺序找。

1
g++ test.cpp -I/root/anaconda3/include/python3.9

指定 include 文件

-include file 相当于在源代码中 #include

1
g++ test.cpp -i /root/anaconda3/include/python3.9/Python.h

指定库目录

-L 可以指定搜索库的路径,如果不指定则编译器只在标准库的目录找。

1
g++ test.cpp -L/root/anaconda3/lib

指定库

-l 指定编译的时候使用的库。例如下面的命令中使用 libpython3.9.so 库编译程序。

首先到系统默认路进搜索,如果找不到,到当前目录,如果当前目录找不到,则到 LD_LIBRARY_PATH 等环境变量置顶的路进去查找,如果还找不到,那么编译程序提示找不到库。

1
g++ test.cpp -lpython3.9

调试选项

链接选项

告警选项

预处理选项

优化选项


Share