GNU GCC在线参考手册
https://gcc.gnu.org/onlinedocs/
author:yjljobrequest@163.com
目录:
- 01 c语言或C++语言 头文件包含方法
- 02 编译器头文件检索过程
- 03 编译过程调试方法
- 04 合理移植自己的库文件
01 c语言或C++语言 头文件包含方法
include “pathname”
include < pathname >
02 编译器头文件检索过程
配置等级:
最低优先级因素 GNU Compiler Collection (GCC) Internals (编译内置)
居中优先级因素 Environment Variables Affecting GCC (环境变量)
最高优先级因素 Options for Directory Search (编译选项)
-
GNU Compiler Collection (GCC) Internals
LOCAL_INCLUDE_DIR – 通常配置为 /usr/local/include
NATIVE_SYSTEM_HEADER_DIR – 通常配置为 /usr/include -
Environment Variables Affecting GCC
CPATH
适用于所有的gcc支持的所有编译语言,例如c,c++,object-c
格式通常为:CPATH=/home/hcyan/incude:/usr/local/innclude
C_INCLUDE_PATH
适用于C语言,格式参考CPATH
CPLUS_INCLUDE_PATH
适用C++语言,格式参考CPATH
OBJC_INCLUDE_PATH
适用object-c,格式参考CPATH -
Options for Directory Search
-I dir
-iquote dir
-isystem dir
-idirafter dir
说明:
-I -system -idirafter 功能基本一致,用于include<>或者include ““两种语法
-iquote 用于include””
03 编译过程调试方法
- 打印出可选路径列表
通过-v option 控制编译输出 打印出编译过程
/var/fpwork/jianleya/C++/oob/chapter2$ gcc -I /usr/myheadrs -v hello.c
因为路径实际不存在,所以被忽略。但是-I /usr/myheadrs 需要注意哦
ignoring nonexistent directory “/usr/local/include/x86_64-linux-gnu”
ignoring nonexistent directory “/usr/lib/gcc/x86_64-linux-gnu/5/…/…/…/…/x86_64-linux-gnu/include”
ignoring nonexistent directory “/usr/myheadrs”
可以看到实际路径检索列表:
#include “…” search starts here:
#include <…> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/5/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
- 预处理器 -H 选项打出实际使用的头文件
gcc -H -I /usr/myheadrs -v hello.c
Compiler executable checksum: bab7da148afbe213714f0f38814b36b0
. /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h
. /usr/include/stdio.h
… /usr/include/features.h
… /usr/include/x86_64-linux-gnu/sys/cdefs.h
… /usr/include/x86_64-linux-gnu/bits/wordsize.h
… /usr/include/x86_64-linux-gnu/gnu/stubs.h
… /usr/include/x86_64-linux-gnu/gnu/stubs-64.h
… /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h
… /usr/include/x86_64-linux-gnu/bits/types.h
… /usr/include/x86_64-linux-gnu/bits/wordsize.h
… /usr/include/x86_64-linux-gnu/bits/typesizes.h
… /usr/include/libio.h
… /usr/include/_G_config.h
… /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h
… /usr/include/wchar.h
… /usr/include/x86_64-linux-gnu/bits/stdio_lim.h
… /usr/include/x86_64-linux-gnu/bits/sys_errlist.h
. readme.h
Multiple include guards may be useful for:
/usr/include/wchar.h
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h
/usr/include/x86_64-linux-gnu/bits/typesizes.h
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h
/usr/include/x86_64-linux-gnu/gnu/stubs.h
readme.h
04 合理移植自己的库文件
需要设计自己的源码库,头文件可以如下存放:
- /usr/include/libpathname
- /usr/local/include/libpathname
- 修改环境变量CPATH