gcc-include

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 合理移植自己的库文件

需要设计自己的源码库,头文件可以如下存放:

  1. /usr/include/libpathname
  2. /usr/local/include/libpathname
  3. 修改环境变量CPATH
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值