对于以压缩包发布的软件,在它的目录下通常都有一个配置脚本configure,它的作用确定编译参数(比如头文件位置、连接库位置等),然后生成Makefile以编译程序。可以进入该软件的目录,执行"./configure --help"命令查看使用帮。

一个程序能正确编译、链接、运行需要满足3个条件:预处理时能找到头文件,连接时能找到库(静态库或动态库),运行时能找到库。下面介绍库文件的搜索路径 :

编译的时候:

gcc最先搜索-L参数指定的路径--->gcc的环境变量LIBRARY_PATH设置的路径--->内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的

1.“-L”指定连接时库的搜索路径,这些库使用"-l"来显示指定,比如"-labc"表示的库文件为libabc.so

2."-rpath-link"比"-L"多一项功能,它指定的目录还可以用于搜索依赖库。

3."-rpath"比"-rpath-link"多一项功能,它指定的目录会被编译进程序中,当程序运行时,首先从这些目录中寻找库。

怎样指定"-rpath-link"呢?连接器arm-linux-ld通常是由arm-linux-gcc间接启动的,而arm-linux-gcc并不认识"-rpath-link"选项,所以需要在前面加上关键字"-Wl",表示选项用于连接器。在执行配置命令configure之前设置LDFLAGS即可,比如:

export LDFLAGS="-Wl,-rpath-link-Wl,/work/crossbuild/X/lib -Wl,-rpath-link-Wl,/work/corssbuild/GTK/lib"

./configure

运行的时候(搜索动态链接库):

路径一:编译时使用"-rpath"指定目录。

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

路径三:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)

路径四:在编译目标代码时指定该程序的动态库搜索路径(编译时,通过gcc 的参数"-Wl,-rpath,"当指定多个动态库搜索路径时,路径之间用冒号":"分隔)

路径五:默认的动态库搜索路径

Linux下的头文件搜索路径

对于以压缩包发布的软件,在它的目录下通常都有一个配置脚本configure,它的作用确定编译参数(比如头文件位置.连接库位置等),然后生成Makefile以编译程序.可以进入该软件的目录,执 ...

查看Linux下*.a库文件中文件、函数、变量

查看Linux下*.a库文件中文件.函数.变量等情况在Linux 下经常需要链接一些 *.a的库文件,那怎么查看这些*.a 中包 含哪些文件.函数.变量: 1. 查看文件:ar -t xxx.a 2. ...

linux下的头文件和库文件搜索路径 (转)

GCC 找头文件有三种策略: 1. 会在默认情况下指定到 /usr/include 文件夹 ( 更深层次的是一个相对路径, GCC 可执行程序的路径是 /usr/bin ,那么它在实际工作时指定头文 ...

linux gcc 编译时头文件和库文件搜索路径

一.头文件    gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始    ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INC ...

gcc编译时头文件和库文件搜索路径

特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始( ...

linux下的.ssh文件夹路径等

1.linux下的.ssh文件夹在~下,直接cd ~/.ssh即可 2.tp经过gd类处理过的水印图片格式为png 3.前端扒下别人家的网站如果自己本地打开有出现相同的代码段则有可能是js动态添加的, ...

Linux下包含头文件的路径问题与动态库链接路径问题

C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径.自己指定的路径就不说了,这里说明一下系统自动搜索的路径. [1 ...

Linux C语言头文件搜索路径

本文介绍在linux中头文件的搜索路径,也就是说你通过include指定的头文件,linux下的gcc编译器它是怎么找到它的呢.在此之前,先了解一个基本概念. 头文件是一种文本文件,使用文本编辑器将代 ...

查看Linux下*.a库文件中文件、函数、变量等情况

在Linux 下经常需要链接一些 *.a的库文件,那怎么查看这些*.a 中包 含哪些文件.函数.变量: 1. 查看文件:ar -t *.a 2. 查看函数.变里:nm *.a

随机推荐

Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明

本文安装显卡驱动的方式已经过时, 最新安装说明请参考发布在Gist上的这篇文章,如有任何疑问,仍然欢迎在本文下留言 :P (本文档使用同一块NVIDIA显卡进行显示与计算, 如分别使用不同的显卡进行显 ...

【转】关于.net framework4.0以及4.5安装失败,“安装时发生严重错误”……

也不知道管不管用,先记着 今天忽然想装一个vs2010,然后装了好几遍,每次都在安装.net4.0的时候失败.好吧,我自己手动装行么.于是手动去装.net 4.0. 结果在还是返回"安装时发 ...

黄聪:HtmlAgilityPack,C#实用的HTML解析类简介

HtmlAgilityPack是.net下的一个HTML解析类库.支持用XPath来解析HTML.这个意义不小,为什么呢?因为对于页面上的元素的xpath某些强大的浏览器能够直接获取得到,并不需要手动 ...

对所有CPU寄存器的简述(16位CPU14个,32位CPU16个)

32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)6个段寄存器(ES.CS.SS.DS.FS和GS)1 ...

jQuery 随滚动条滚动效果 (固定版)

//侧栏随动 var rollStart = $('.feed-mail'), //滚动到此区块的时候开始随动 rollSet = $('.search,.weibo,.group,.feed-mai ...

顺手的Linux发行版及其工具推荐

从Windows切换到Linux已经有半年多的时间了,简单给大家推荐一些个人感觉不错的软件,主要都是和开发相关的通用软件--- 0.archlinux  挑一个比较顺手的linux发行版当然是首要任务 ...

Java基础学习笔记二十四 MySQL安装图解

.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Compl ...

关于docker 意外停止,重新快速启动措施

1. 我们要重启这个镜像,需要知道这个镜像ID,类似这个: 7079ff99e10ac326726a364348853c0e508cad8ce00ae970f3c800f172a40252 那么你可以 ...

[LeetCode&Python] Problem 492. Construct the Rectangle

For a web developer, it is very important to know how to design a web page's size. So, given a speci ...

flexbox父盒子flex-direction属性

linux的库文件路径,Linux下的库文件搜索路径相关推荐

  1. linux c 读取目录及其子目录下所有.jpg文件的文件名(无后缀)

    此程序用来生成<yolo v2中VOC数据生成labels所需的图片文件名文档>train.txt linux c 读取目录及其子目录下所有.jpg文件的文件名:   http://www ...

  2. Linux拓展之查找指定目录下的最大文件

    概述 有时候我们需要查找指定目录下的最大文件,通常说的指定目录包括该目录下的所有文件和子目录下的所有文件.如下是几种能查找最大文件的方法. 方法一 查找指定目录下的最大文件,但不包括所有子目录,只包括 ...

  3. HTML -- HTML文本框、单选框、多选框、按钮、文本域、文件域、下拉框、搜索框滑动和简单验证

    1. HTML文本框.单选框.多选框.按钮.文本域.文件域.下拉框.搜索框滑动和简单验证 1.1 表单元素格式 placeholder 提示文本. 示例: <!DOCTYPE html> ...

  4. java settings文件夹_windows下打开.m2文件夹,没有找到setting.xml

    Frank作家 2018-03-15 10:07 已采纳 那就自己创建一个 手动创建本地仓库的存放路径,例如:D:\Java\m2\repository: 在windows的环境变量中增加了新的用户变 ...

  5. nodejs 遍历目录(文件夹)下的所有文件

    nodejs 遍历目录 const path = require('path') const fs = require('fs') // 服务器端的jquery,用于选择字符 eg: $('.titl ...

  6. centos java 安装路径_Centos7下查询jdk默认安装路径

    今天学习了docker,希望能搭建个springboot运行环境,其中就涉及JDK8.Maven.Mysql.Docker.docker-compose.tomcat.nginx基础环境的安装,下面是 ...

  7. cmd跳转文件夹 win10_win10下在当前文件夹位置打开CMD

    win10下在当前文件夹位置打开CMD win10下在当前文件夹位置打开CMD 我们想要在win10下打开命令行并且进入到当前文件夹的位置,这里提供几种方法. win+r -> cmd -> ...

  8. 复制指定目录下的所有文件(包含目录下的子目录文件)

    首先先创建两个file对象,一个是源数据file,也就是你要复制的路径 另一个是目的地file对象,就是你想要复制到在指定路径,我这里复制是是F盘下的MulLu文件夹下的所有文件,复制到F盘下的Dow ...

  9. excel合并同一目录下代码(多文件合并到同一个文件多Sheet下、多文件合并到同一个Sheet下)

    一.多文件合并到同一个文件多Sheet下: 1.在想要合并的excel文件目录中新建一个excel文件. 2.右键新建excel中的sheet1选择"查看代码",或者Alt+F11 ...

  10. python设置路径_Python探索之修改Python搜索路径

    当Python执行import语句时,它会在一些路径中搜索Python模块和扩展模块.可以通过sys.path查看这些路径,比如: >>> import sys >>&g ...

最新文章

  1. Exchange2003-2010迁移系列之七
  2. c语言笔试题(带答案)
  3. 4.windows和Linux下创建oracle用户名表空间,表,插入数据,用户管理表等操作
  4. (十)HTTP协议【前后端分离的时代,网络请求是前端的生命线】
  5. delphi xe4 ini文件不能读取的解决方法
  6. python抓包代码_Python抓包并解析json爬虫的完整实例代码
  7. (原創) 如何在Visual Studio 2005編譯boost 1.33.1? (C/C++) (VC++) (boost)
  8. 名不正则言不顺,言不顺则事不成
  9. vuejs+webpack环境搭建
  10. html跳转浏览器打开新页面打开新窗口,用JS控制打开新窗口
  11. 淘宝无线端一键直达微博自助生成工具
  12. 一篇文章学完数据结构绪论 线性表 栈和队列
  13. 计算机视频剪辑教程,一个小白也能学会的剪辑教程
  14. 避坑11_VScode在vue文件内template无法使用tab补齐标签
  15. 在OpenCV里实现Kirsch算子
  16. 摄影中快门、光圈、ISO之间的关系
  17. c#--在异步方法中异步地等待任务
  18. 【转载】Python第三方库资源
  19. linux查询awk命令用法
  20. hadoop常用的命令大全

热门文章

  1. QQ plot 的解读
  2. 用html5做元素周期表,Web纯前端“旭日图”实现元素周期表
  3. 用ENSP华为模拟器组建一个完整的校园网
  4. 护士站之web service
  5. 因为我没交周报,leader要罚款200元,怎么给他挖坑?能以敲诈勒索罪告他吗?...
  6. C++标准库---排列元素next_permutation()prev_permutation()
  7. 计算机绘画小房子教案,幼儿园中班美术教案《漂亮的小房子》绘画活动
  8. 西门子S7通讯批量写入char数据
  9. 西安电子科技大学MSP 3月校园活动总结
  10. transformer框架+self-attention技术+和图的关系