gcc: gcc include path gcc中include文件的搜索路径

本文详细介绍了如何解决gcc编译器在使用库头文件和链接库时遇到的常见错误,包括如何修改include路径和库搜索路径,确保头文件和库的正确引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >






     we saw how to link to a program with functions in the C math library ‘libm.a’, using the short-cut option -lm and the header file ‘math.h’.

    A common problem when compiling a program using library header files is the error:

    FILE.h: No such file or directory
    

    This occurs if a header file is not present in the standard include file directories used by gcc. A similar problem can occur for libraries:

    /usr/bin/ld: cannot find library

    This happens if a library used for linking is not present in the standard library directories used by gcc.

    By default, gcc searches the following directories for header files:

    /usr/local/include/
    /usr/include/
    

    and the following directories for libraries:

    /usr/local/lib/
    /usr/lib/
    

    The list of directories for header files is often referred to as the include path, and the list of directories for libraries as the library search path or link path.

    The directories on these paths are searched in order, from first to last in the two lists above.(7) For example, a header file found in ‘/usr/local/include’ takes precedence over a file with the same name in ‘/usr/include’. Similarly, a library found in ‘/usr/local/lib’ takes precedence over a library with the same name in‘/usr/lib’.

    When additional libraries are installed in other directories it is necessary to extend the search paths, in order for the libraries to be found. The compiler options-I and -L add new directories to the beginning of the include path and library search path respectively.


    gcc搜索的路径取决于编译gcc时指定的路径。在编译gcc时做如下改变,会修改gcc引用路径


    Change the StartFile Spec and Standard Include Dir so that GCC looks in /tools:

    echo -en '#undef STANDARD_INCLUDE_DIR\n#define STANDARD_INCLUDE_DIR "/tools/include/"\n\n' >> gcc/config/linux.h
    echo -en '\n#undef STANDARD_STARTFILE_PREFIX_1\n#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"\n' >> gcc/config/linux.h
    echo -en '\n#undef STANDARD_STARTFILE_PREFIX_2\n#define STANDARD_STARTFILE_PREFIX_2 ""\n' >> gcc/config/linux.h

    Now alter gcc's c preprocessor's default include search path to use /tools only:

    cp -v gcc/Makefile.in{,.orig}
    sed -e "s@\(^CROSS_SYSTEM_HEADER_DIR =\).*@\1 /tools/include@g" \
        gcc/Makefile.in.orig > gcc/Makefile.in

    此时编译出来的gcc工具其默认include搜索路径变为/tools/include了

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值