linux gcc 头文件搜索路径

2023-10-30

2011-02-15 13:40  423人阅读  评论(0)  收藏  举报

一、头文件
  
gcc 在编译时寻找所需要的头文件 :
  
※搜寻会从-I开始
  
※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
  
※再找内定目录
/usr/include

/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
  
库文件但是如果装gcc的时候,是有给定的prefix的话,那么就是
/usr/include

prefix/include
prefix/xxx-xxx-xxx-gnulibc/include
prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include
  
二、库文件
编译的时候:
※gcc会去找-L
※再找gcc的环境变量LIBRARY_PATH
  
※再找内定目录 /lib:/usr/lib: /usr/local/lib:这是当初compile gcc时写在程序内的

三、运行时动态库的搜索路径

1、在配置文件/etc/ld.so.conf中指定动态库搜索路径

2、通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)
  
3、在编译目标代码时指定该程序的动态库搜索路径(还可以在编译目标代码时指定程序的动态库搜索路径。
  
这是通过gcc 的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间用冒号":"分隔
4、默认的动态库搜索路径/lib    /usr/lib
可以通过执行可执行文件pos得到的结果不同获知其搜索到了哪个动态库,从而获得第1个动态库搜索顺序,然后删除该动态库,
  
再执行程序pos,获得第2个动态库搜索路径,再删除第2个被搜索到的动态库,
  
如此往复,将可得到Linux搜索动态库的先后顺序。
程序pos执行的输出结果和搜索到的动态库的对应关系如表1所示
  
程序pos输出结果 使用的动态库 对应的动态库搜索路径指定方式
./ ./libpos.so 编译目标代码时指定的动态库搜索路径
  
/root/test/env/lib /root/test/env/lib/libpos.so 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
  
/root/test/conf/lib /root/test/conf/lib/libpos.so 配置文件/etc/ld.so.conf中指定的动态库搜索路径
  
/lib /lib/libpos.so 默认的动态库搜索路径/lib
  
/usr/lib /usr/lib/libpos.so 默认的动态库搜索路径/usr/lib
  
动态库的搜索路径搜索的先后顺序是:
  
1.编译目标代码时指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib    /usr/lib。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux gcc 头文件搜索路径 的相关文章

  • GCC 有内置的编译时断言吗?

    我们现有的编译时断言实现基于负数组索引 并且它在 GCC 上提供的诊断输出很差 C 0x的static assert这是一个非常好的功能 它提供的诊断输出要好得多 我知道 GCC 已经实现了一些 C 0x 功能 有谁知道如果static a
  • 为什么 gcc 会在显然不需要的时候生成 PLT?

    考虑这段代码 int foo int main foo while 1 int foo 在共享对象中实现 编译此代码gcc o main main c lfoo nostdlib m32 O2 e main no pic L shared给
  • Linux 在崩溃时自动重新启动应用程序 - 守护进程

    我有一个运行嵌入式 Linux 的系统 它的持续运行至关重要 基本上 它是一个与传感器通信并将数据中继到数据库和 Web 客户端的过程 如果发生崩溃 如何自动重启应用程序 此外 还有多个线程进行轮询 例如套接字和 uart 通信 如何确保没
  • 如何在 Flutter 中创建类似 Telegram 或 WhatsApp 聊天页面的富文本输入?

    How can I create a Rich Text Input like a Telegram chat page without displaying reserved characters such as bold italic
  • “原子”系统调用是什么意思?

    我知道atomic通常在以下上 下文中使用竞争条件意思是类似一致性 and 根据多线程 多处理环境确定结果 没关系 但最近我读到了Linux中的原子系统调用 但不明白什么是atomic实际上这里的意思是 即how this 原子性 is 实
  • 如果等于特定值则替换列

    我希望替换 CSV 中的第四列 如果它等于 N A 我正在尝试将其更改为 1 我似乎无法让它发挥作用 awk F if 4 N A 4 1 test csv 您可以使用以下内容awk awk F 4 4 N A 1 4 1 OFS test
  • 很好的 C 库集合? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个很好的 ANSI C 库集合 用于处理向量 哈希映射 二进制树 字符串处理等 Try g
  • 如何使用c在Linux中获取当前时间戳(以纳秒为单位)

    我知道我们可以使用clock gettime CLOCK MONOTONIC 我尝试问的问题是 如果我需要以纳秒为单位的时间 从时代来看 这将是一个巨大的数字 例如 自纪元以来的秒数是13438461673 so 13438461673 1
  • Visual Studio 代码中的“Git:gpg 未能签署数据”

    全新安装 Linux 后 我尝试设置我的环境 并且不断收到Git gpg failed to sign the data在本地提交更改时出错 我使用的是 Visual Studio Code 专有版本 而不是开源版本 gitconfig u
  • C++向量数组运算符计算成本高?

    我一直都知道 C 的丰富抽象会带来一定的计算开销 但我的印象是 一旦应用了正确的编译器优化 这种开销几乎可以忽略不计 我很好奇这种开销到底有多大 所以我编写了一个简单的测试来确定这一点 该测试是一个模板化函数 它接受一个容器变量 为容器中的
  • 如何在每个 xargs 命令之间休眠 1 秒?

    例如 如果我执行 ps aux awk print 1 xargs I echo 我想让 shell 在每次之间休眠 1 秒echo 如何更改我的 shell 命令 您可以使用以下语法 ps aux awk print 1 xargs I
  • Linux GCC 上 的 C++ 编译问题

    尝试过谷歌并在这里搜索 但没有运气 我正在尝试将一些使用 Windows 的代码移植到 Linux 上 然后我得到了大量的编译错误 我所做的只是 include
  • 使用 sysfs 的 Linux 用户空间 GPIO 中断

    我想使用 sysfs 在用户空间上使用 GPIO 中断 我使用这些命令 root at91 gpio109 gt echo 109 gt export root at91 gpio109 gt cd gpio109 root at91 gp
  • 强制 shell 在 SunGrid 引擎中使用 conda 变量中的 python [重复]

    这个问题在这里已经有答案了 我正在尝试在 SunGrid 引擎中执行 python 文件 并且从 anaconda3 环境变量中执行它 我的代码很简单 from future import print function import url
  • top命令的CPU使用率计算

    我正在尝试使用 GNU coreutil top 的公式来计算 CPU 使用率的百分比 但 top 正在使用一些 half total 来计算百分比 即在百分比上添加 0 5 在top的utils c中 以下行 在 3 8 beta1 中
  • 无法声明接口:资源繁忙

    我正在使用 USB4Java 低级版本 并且基本上是根据这段代码工作的here http www mets blog com java usb communication usb4java 我在 Ubuntu 中工作 遇到了有关权限的问题
  • GCC、字符串化和内联 GLSL?

    我想使用宏字符串化来声明内联 GLSL 着色器字符串 define STRINGIFY A A const GLchar vert STRINGIFY version 120 n attribute vec2 position void m
  • 如何从画布中删除路径区域(Android)

    我需要裁剪角落ImageView 不要将它们弄圆 而是擦除每个角上的三角形 似乎唯一的方法就是覆盖onDraw方法并使用从画布上删除这些区域Path 问题是我没有纯色背景 所以我需要擦除这些区域 但不要用某种颜色填充它们 我为此使用以下代码
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良

随机推荐

  • Java实现实现简单算法之最长对称字符串

    题目 已知一字符串 求其内包含的最长对称字符串 例 已知字符串 google 输出最长对称字符串 goog 已知abada 输出aba 已知sdghjdgzzgdah 输出 dgzzgd 看到题目时 大家第一反应都是模棱两可的 好像可以这样
  • Selenium+Python3之:多线程进行跨浏览器测试

    python多线程跨浏览器测试 1 引言 2 跨浏览器操作及定义 2 1 啥是跨浏览器测试 2 2 为啥要进行跨浏览器测试 2 3 跨浏览器测试执行 3 代码编写实战 1 引言 在WebUI自动化方面的博文 我也是有好一段时间没有更新了 这
  • 什么是期货交易的技术分析(期货交易市场技术分析)

    什么是期货买卖的本领领会 拓展材料 1 期货本领领会规则 期货本领领会的规则是伴随趋向 期货本领领会的表面普通 期货本领领会的表面普通是创造在三个有理的假如之上的 商场动作具备容纳性和容纳性 价钱以一种趋向的办法兴盛 汗青将重演 在这三个假
  • 如何利用Python爬虫在网上接单,一周赚7800元,一天只要两小时 !

    1 兼职处理数据 互联网时代下 越来越多的人离不开电脑办公 而与电脑办公分隔不开的 就是处理电脑上保存的数据 虽然说Excel整理数据功能很强大 但在Python面前 曾经统治职场的它也得败下阵来 因为Python在搜集整理分析数据的过程中
  • ConstraintLayout 高级特性,工具总结

    layout constraintWidth 用法 xml中 app layout constrainedWidth true 作用 使得该view的宽受限于他的约束 app layout constrainedHeight true 同理
  • ChatGPT专业应用:基于关键词撰写原创文章

    正文共 485 字 阅读大约需要 2 分钟 内容运营 SEO投放必备技巧 您将在2分钟后获得以下超能力 基于关键词撰写原创文章 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 Kim 编辑者 Linda 此图
  • QT CREATOR 插件开发:添加新的工程类型(上)

    Qt Creator 中 新的工程类型将出现在 文件 gt 新建 菜单项中 我们可以通过打开的选择工程类型的对话框来找到所需要的工程 在本章中 我们将学习如何向上面所示的对话框中添加新的工程类型 Core IWizard接口 Qt Crea
  • 基于富芮坤fr8016 蓝牙5.0 芯片设计的BLE HID Joystick 游戏摇杆设备

    文章目录 ble hid 学习笔记 HID报告描述符与BLE HID profile之间关系 1 HID报告描述符 富芮坤fr8016 设计Joystick例子 1 描述X轴Y轴Z轴 2 描述按钮 3 Joystick 报告描述符 4 程序
  • Linux服务 Nginx(二)

    Linux服务 Nginx 二 最权威的资料 官方文档http nginx org en docs 主配置段的指令 正常运行的必备配置 1 user USERNAME GROUPNAME 指定运行worker进程的用户和组 Syntax u
  • c语言利用穷举法求1-100内的质数

    方法 include
  • 广告数据集mapreduce实验(词频统计)

    本实验是使用广告数据集 通过mapreduce获取购买者年龄人数分布 数据列分别为 ad id xyz campaign id age gender Impressions Clicks Total Conversion Approved
  • 基于MNIST实现GAN(pytorch)

    基于MNIST实现生成对抗网络 pytorch逐行实现 本文是pytorch逐行实现GAN网络 作为一个基础GAN框架来学习 以后编写复杂的GAN的衍生网络框架都是同样的思想 import numpy as np import torch
  • Linux 下获取Root权限的几种方法

    方法分为永久性获取root权限以及非永久性获取Root权限 非永久性获取Root权限 非永久性获取Root权限可以在我们要键入的命令之前加上sudo前缀 如我们要键入的命令是 rm 以Root用户执行的方式就是 sudo rm 这样在每个需
  • 苹果的AI野心:内耗、反击与挑战

    图片来源 由无界AI生成 作者丨山核 苹果一年一度的秋季 春晚 时间越来越近 但在大模型浪潮下 苹果何时推出自己的 苹果GPT 成了另一个关注的话题 毕竟 前有华为 后有小米 在中国手机厂商争相将大模型装进移动终端的同时 苹果却依旧对AI大
  • ubuntu16.04 conda新建环境安装新版gcc教程

    首先 使用conda新建环境 conda create name yourenvname python 3 x 最新版的gcc移步链接 上面是我所选择的版本号 选择了第一个命令 创建一个如上图类似的软链接即可 这一步一定要寻找bin下面的新
  • Mysql的explain官方文档翻译

    原文地址 https dev mysql com doc refman 5 7 en explain output html explain extra information 先复制进来 每天翻译一段 有兴趣的小伙伴可以一块加入进来翻译
  • iOS进阶_GCD(二.GCD串行队列&并发队列)

    GCD 核心概念 将任务添加到队列 指定任务执行的方法 任务 使用block封装 block 就是一个提前准备好的代码块 在需要的时候执行 队列 负责调度任务 串行队列 一个接一个的调度任务 并发队列 可以同时调度多个任务 任务执行函数 任
  • 差分进化算法在图像处理中的应用研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 Matlab代码实现 4 参考文献 1 概述 文献来源 生物的进化普遍遵循达尔文的 物竞
  • FreeSWITCH 架构

    从来章开始 我们正式开始我们的 FreeSWITCH 之旅 今后我们不再用单独的章节来讲述VoIP中的其它要素和概念 而是在用到时穿插于各个章节之中 总体结构 FreeSWITCH 由一个稳定的核心及外围模块组成 下图来自 FreeSWIT
  • linux gcc 头文件搜索路径

    linux gcc 头文件搜索路径 2011 02 15 13 40 423人阅读 评论 0 收藏 举报 一 头文件 gcc 在编译时寻找所需要的头文件 搜寻会从 I开始 然后找gcc的环境变量 C INCLUDE PATH CPLUS I