补充 gcc 参数。

Signed-off-by: rick.chan <cy@haoan119.com>
This commit is contained in:
rick.chan 2024-06-03 13:55:44 +08:00
parent ca475802ab
commit d00dc7cb5c
2 changed files with 32 additions and 12 deletions

View File

@ -10,16 +10,24 @@ gcc -o <target> <source files> [other parameters]
### 1.1. 常用参数
* -c只编译不链接产生 .o 文件(就是 obj 文件),不产生执行文件
* -o指定输出文件名
* -g可执行程序包含调试信息
* -O\<n\>:设置优化级别
* -static链接静态库禁止使用动态库
* -shared进行动态库编译链接动态库
* -I\<dir\>:在头文件的搜索路径中增加 dir 目录
* -L\<dir\>:在动态库的搜索路径中增加 dir 目录
* -l\<name\>链接静态库libname.a或动态库libname.so的库文件
* -fPIC(或 fpic):生成使用相对地址无关的目标代码
- -c只编译不链接产生 .o 文件(就是 obj 文件),不产生执行文件
- -o指定输出文件名
- -g可执行程序包含调试信息
- -O\<n\>:设置优化级别
- -static链接静态库禁止使用动态库
- -shared进行动态库编译链接动态库
- -I\<dir\>:在头文件的搜索路径中增加 dir 目录
- -L\<dir\>:在动态库的搜索路径中增加 dir 目录
- -l\<name\>链接静态库libname.a或动态库libname.so的库文件
- -fPIC(或 fpic):生成使用相对地址无关的目标代码
- -x用于忽略源代码文件扩展名并使用 -x 参数指定的语言类型。如果源码文件不是标准后缀名称(.c.cpp )或语法与扩展名不符,则 gcc 编译器便不能通过后缀名判断语言类型,此时可以通过该参数指定语言类型。
- -xc
- -xc++
- -xobjective-c
- -xc-header
- -xcpp-output
- -assembler
- -assembler-with-cpp
### 1.2. 编译警告控制参数
@ -134,8 +142,8 @@ GCC 会在汇编时加入一些堆栈跟踪信息,以便调试系统能够获
### 2.1. rpath/rpath-link
* -rpath-link用于“链接”的时候的例如你显式指定的需要 FOO.so但是 FOO.so 本身是需要 BAR.so 的,后者你并没有指定,而是 FOO.so 引用到它,这个时候,会先从 -rpath-link 给的路径里找。
* -rpath: 用于“运行”的时候。运行的时候,如果要找 FOO.so 文件,会从这个选项里指定的地方去找。对于交叉编译,交叉编译链接器需已经配置 --with-sysroot 选项才能起作用。也就是说,-rpath 指定的路径会被记录在生成的可执行程序中,用于运行时查找需要加载的动态库。
- -rpath-link用于“链接”的时候的例如你显式指定的需要 FOO.so但是 FOO.so 本身是需要 BAR.so 的,后者你并没有指定,而是 FOO.so 引用到它,这个时候,会先从 -rpath-link 给的路径里找。
- -rpath: 用于“运行”的时候。运行的时候,如果要找 FOO.so 文件,会从这个选项里指定的地方去找。对于交叉编译,交叉编译链接器需已经配置 --with-sysroot 选项才能起作用。也就是说,-rpath 指定的路径会被记录在生成的可执行程序中,用于运行时查找需要加载的动态库。
举例如下:

View File

@ -26,6 +26,18 @@ CompileFlags:
- -Xcompiler*
```
其中 -x 为 gcc 参数,用于忽略源代码文件扩展名,并使用 -x 参数指定的语言类型。如果源码文件不是标准后缀名称(.c.cpp )或语法与扩展名不符,则 gcc 编译器便不能通过后缀名判断语言类型,此时可以通过该参数指定语言类型。取值可以为:
- -xc
- -xc++
- -xobjective-c
- -xc-header
- -xcpp-output
- -assembler
- -assembler-with-cpp
-I 为 gcc 指定库头文件路径的参数。
## .vscode/settings.json
创建:.vscode/settings.json 文件,参考配置格式如下: