linux .la文件的作用,.la文件 和 libtool

Linux下文件的类型是不依赖于其后缀名的,但一般来讲:

.o 是目标文件,相当于Windows中的.obj文件

.so 为共享库,是shared object,用于动态连接的,和dll差不多

.a 为静态库,是好多个.o合在一起,用于静态连接

.la 为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式

$file *.la

libtool的工作原理

libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态库。可以认为libtool是gcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些库即可,libtool将处理库的依赖等细节。libtool只与后缀名为 .lo、.la 的libtool文件打交道。

libtool主要的一个作用是在编译大型软件的过程中解决了库的依赖问题;将繁重的库依赖关系的维护工作承担下来,从而释放了程序员的人力资源。libtool提供统一的接口,隐藏了不同平台间库的名称的差异等细节,生成一个抽象的后缀名为 .la 高层库 libxx.la(其实是个文本文件),并将该库对其它库的依赖关系,都写在该 .la 的文件中。该文件中的 dependency_libs 记录该库依赖的所有库(其中有些是以 .la 文件的形式加入的);libdir 则指出了库的安装位置;library_names 记录了共享库的名字;old_library记录了静态库的名字。

当编译过程到link阶段的时候,如果有下面的命令:

$libtool --mode=link gcc -o myprog -rpath /usr/lib –L/usr/lib –la

libtool会到/usr/lib路径下去寻找liba.la,然后从中读取实际的共享库的名字(library_names中记录了该名字,比如liba.so)和路径(lib_dir中记录了,比如libdir='/usr/lib'),返回诸如 /usr/lib/liba.so 的参数给激发出的gcc命令行。

如果liba.so依赖于库/usr/lib/libb.so,则在liba.la中将会有 dependency_libs='-L/usr/lib -lb' 或者 dependency_libs='/usr/lib/libb.la' 的行;

如果是前者,其将直接把“-L/usr/lib –lb”当作参数传给gcc命令行;

如果是后者,libtool将从/usr/lib/libb.la中读取实际的libb.so的库名称和路径,然后组合成参数“/usr/lib/libb.so”传递给gcc命令行。

当要生成的文件是诸如 libmylib.la 的时候,比如:

$libtool --mode=link gcc -o libmylib.la -rpath /usr/lib –L/usr/lib –la

其依赖的库的搜索基本类似,只是在这个时候会根据相应的规则生成相应的共享库和静态库。

注意:

(1) libtool在链接的时候只会涉及到后缀名为 .la 的 libtool文件,实际的库文件名称和库安装路径以及依赖关系是从该文件中读取的。

(2) 并不是所有的库都是用libtool编译的。

参考:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html输入密码跳转页面_【小乔锦囊】角色/仓库密码无法清除,怎么办?

— ◆ 小 乔 锦 囊 ◆ —近期,小乔收到玩家宝宝们的提问:在客服专区中进行角色或仓库密码的清除时,会收到登录验证失败的提示,应该怎么办?辛苦玩家宝宝们的热心反馈!该问题目前已在紧急修复中。同时&#x…

linux redis 5.6扩展,Windows下为PHP5.6安装Redis扩展和memcached扩展

2.根据PHP版本号,编译器版本号和CPU架构,选择php_redis-2.2.5-5.6-ts-vc11-x64.zip和php_igbinary-1.2.1-5.5-ts-vc11-x64.zip下载地址:http://windows.php.net/downloads/pecl/snaps/redis/2.2.5/http://windows.php.net/downloads/pecl/rel…

string拼接_String拼接操作-的优化

很多讲Java优化的文章都会强调对String拼接的优化。倒不用特意记,本质上在于对不可变类优势和劣势的理解上。需要关注的是编译器对String拼接做出的优化,在简单场景下的性能能够与StringBuilder相当,复杂场景下仍然有较大的性能问题。网上关于…

高斯消元法的c语言编程,列主元高斯消元法的C语言编程

列主元高斯消元法的C语言编程列主元高斯消元法基本思想:用高斯消元法求解线性方程组时,为避免小的主元,在进行第k步消元前,应该在第k列(k)元素aik(i k,(k)(k)例如|aikk| max|aik|,再把第ik个方程与第k,n)中找出第一个出…

cesium加载entity图片缩放_Cesium中级教程4 – 空间数据可视化(二)

Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/Viewer中的Entity功能让我们看看Viewer为操作entities提供出来的功能函数。选中和描述点击Viewer中的entity将在entity的位置上呈现SelectionIndicator控件,提…

西安邮电大学卓越班c语言面试题,西安邮电大学C语言实验报告.docx

西 安 邮 电 学 院C语言程序设计课内实验报 告 书学院名称:计算机学院学生姓名:刘辉娟专业名称:计算机科学与技术班 级:计科1106学号:时间:2011-11-20至2011-11-30实验题目 数组一、????实验目的&#…

python 模糊匹配_很冷门,但非常实用的 Python 库

Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使它成为全世界用户(初学者和高级用户)的合适选择。它的成功和流行的原因之一是它强…

ccf魔数c语言,ccf 201609-4 交通规划

附上代码&#xff1a;#include#include#include#include#include#includeusing namespacestd;#define inf 0xfffffffintn, m;typedefstructNODE{intto;intcost;friendbool operator < (const NODE &a, const NODE &b) {return a.cost >b.cost;}}node;typedefstru…

python数据可视化是什么_Python数据分析:可视化

本文是《数据蛙三个月强化课》的第二篇总结教程&#xff0c;如果想要了解数据蛙社群&#xff0c;可以阅读对于我们数据分析师来说&#xff0c;不仅要自己明白数据背后的含义&#xff0c;而且还要给老板更直观的展示数据的意义。所以&#xff0c;对于这项不可缺少的技能&#xf…

c语言主函数名用户指定,C语言允许main函数带形参,且形参个数和形参名均可由用户指定。()...

听力原文&#xff1a;W: Oh, Ken, I have been meaning to talk to you.M: Hi, Denise! Whats up?W: I have this great job lined up to manage a clothing store at the mall.M: Oh, say in detail, please.W: Well, one of the professors in my department just told me a…

ENSP配置 实例一 不同VLAN间通信

ENSP配置 实例一 不同VLAN间通信 SW1 [SW1]vlan batch 10 20 [SW1]interface g0/0/1 [SW1-GigabitEthernet0/0/1]port link-type access [SW1-GigabitEthernet0/0/1]port default vlan 10 [SW1-GigabitEthernet0/0/1]int g0/0/2 [SW1-GigabitEthernet0/0/2]port link-type acce…

用python绘制心形_python小趣味_520绘制一个心形.

#!/usr/bin/env python#coding:utf-8 importturtleimporttime#画爱心的顶部 defLittleHeart():for i in range(200): turtle.right(1) turtle.forward(2)#输入表白的语句&#xff0c;默认I Love you love input(Please enter a sentence of love, otherwise the default is &q…

ENSP配置 实例二 单臂路由配置

ENSP配置 实例二 单臂路由配置 单臂路由配置 配置 路由&#xff1a; interface EigabitEthernet0/0/0 ip address 10.0.1.1 24 interface EigabitEthernet0/0/0.1 dot1q termination vid 10 ip address 192.168.1.254 24 arp broadcast enable interface EigabitEthernet0/0/…

用python画数学函数图像教程_Python 绘制你想要的数学函数图形

Python 非常热门&#xff0c;但除非工作需要没有刻意去了解更多&#xff0c;直到有个函数图要绘制&#xff0c;想起了它。结果发现&#xff0c;完全用不着明白什么是编程&#xff0c;就可以使用它完成很多数学函数图的绘制。 通过以下两个步骤&#xff0c;就可以进行数学函数的…

ENSP配置 实例三 静态路由配置

ENSP配置 实例三 静态路由配置 R1配置命令 system-view [R1]interface Ethernet 0/0/0 [R1-Ethernet0/0/0]ip add 192.168.1.254 24 [R1-Ethernet0/0/0]quit [R1]interface tEthernet 0/0/1 [R1-Ethernet0/0/1]ip addr 10.0.12.1 24 [R1-Ethernet0/0/1]quit [R1]ip route-stati…

单片机 c语言 概念题,(C语言版)单片机复习题.doc

单片机复习题一、名词解释1、时序&#xff1a;按照时间顺序显示的对象(或引脚、事件、信息)序列关系。2、指令&#xff1a;CPU用于指挥功能部件完成某一指定动作的指示和命令。3、变量&#xff1a;在程序执行过程中&#xff0c;数值可以发生改变的量称为变量。4、伪指令&#x…

python 散点图 不同颜色_python – pandas – 每个点都有不同颜色图例的散点图

以下方法将根据您的数据框创建颜色列表,然后使用每种颜色的标签绘制一个点&#xff1a; import matplotlib.pyplot as plt import matplotlib.cm as cm import matplotlib.colors as colors import numpy as np import pandas as pd fig, ax plt.subplots() df pd.DataFrame(…

ENSP配置 实例四 默认路由配置

ENSP默认路由配置 1&#xff0c;配置R1路由器 sys ##进入系统视图模式 [Huawei]sys R1 ##修改名字 [R1]int e0/0/0 ##进入接口 [R1-Ethernet0/0/0]ip add 192.168.1.254 24 ##配置ip地址 [R1-Ethernet0/0/0]undo shut ##开启物理接口 [R1-Ethernet0/0/1]int e0/0/1 [R1-Etherne…

套汇算法c语言,在金字塔下实现套利策略的测评

瀑布线是指用异同移动平均线(MACD)指标绘制的移动平均线&#xff0c;用于在证券中生成买入和卖出信号。瀑布线或信号线是交易者用来预测未来价格趋势的MACD指标线的九个周期指数移动平均线(EMA)。虽然九周期EMA是瀑布线的默认设置&#xff0c;但交易者可以调整EMA的长度以适应其…

python数据分析函数大全_python中数据分析常用函数整理

一. apply函数 作用&#xff1a;对 DataFrame 的某行/列应用函数之后&#xff0c;Apply 返回一些值。函数既可以使用默认的&#xff0c;也可以自定义。注意&#xff1a;在第二个输出中应用 head() 函数&#xff0c;因为它包含了很多行。 #创建一个新函数 def num_missing(x): r…