Linux动态链接库的应用学习

图片 1

Linux系统下分为两类别型的函数库:

教到Linux 的acl
,只是大略地讲了一晃,结合本身自身前边的认知,在那边记录一下。

Linux系统下分为两种类型的函数库:

这篇小说是与 Linux
一齐上学多如牛毛的一部分:

  1. 静态库
    静态库的链接职业是在前后相继编写翻译阶段完结的。
    各类需求调用该静态库的次序中都有一份该库的正片,
    因此静态库在程序中的相对地点在编写翻译阶段就规定下来了;
    是因为三个程序中还要有多份静态库的正片,所以增大了前后相继的大小。

  2. 动态链接库
    动态链接库在前后相继编写翻译阶段不会被拷贝到程序中。
    它是程序在运维阶段必要调用库时才去将函数库链接到可实施程序中的。
    鉴于它是动态加载的,所以它在前后相继中的相对地点是不鲜明的;
    而是函数库内部的一一函数之间的争持地点是在编写翻译时期显明下来的。
    动态链接库须求操作系统的支撑,幸运的是现在的操作系统基本上都帮助动态链接库。

(当初小编因而知道
Linux也会有acl这工具,是因为自身在上学cisco路由时,学到ACL访谈调整列表的故事情节,突发其想,想着Linux有未有访问调整之类
的事物?就上网搜了须臾间,结果真搜到了,那时候真欢跃。哈哈。那是题外话)

  1. 静态库
    静态库的链接专门的学问是在前后相继编写翻译阶段达成的。
    种种供给调用该静态库的前后相继中都有一份该库的正片,
    故此静态库在程序中的绝对地点在编写翻译阶段就规定下来了;
    鉴于七个程序中而且有多份静态库的正片,所以增大了前后相继的轻重。

  2. 动态链接库
    动态链接库在先后编写翻译阶段不会被拷贝到程序中。
    它是程序在运作阶段须要调用库时才去将函数库链接到可试行程序中的。
    鉴于它是动态加载的,所以它在程序中的相对位置是不分明的;
    只是函数库内部的顺序函数之间的相对地点是在编写翻译时期明确下来的。
    动态链接库供给操作系统的帮忙,幸运的是今后的操作系统基本上都援救动态链接库。

  • 与 Linux 一同上学:
    学习类型
  • 与 Linux 一起学习:
    物理模拟
  • 与 Linux 一齐上学:
    学习音乐
  • 与 Linux 一起学习:
    八个地理应用程序
  • 与 Linux 一齐上学: 使用那一个 Linux
    应用来克服你的数学学习

出于是程序运转时根据需求实时的载入库,
故此借使函数库找不到可能函数库中远远不足某些库函数都会促成程序实践错误。
对此动态链接库来讲,那样的不当只可以在程序运营时技巧被开采。
假诺是静态库,则那一个不当能够在程序编写翻译阶段被提前发掘。

率先先模拟一下条件,先创立二个文件系统。

是因为是程序运维时依照须求实时的载入库,
就此只要函数库找不到也许函数库中缺点和失误有些库函数都会导致程序实施错误。
对于动态链接库来说,那样的荒谬只可以在程序运转时技巧被开掘。
若是是静态库,则那几个错误能够在先后编写翻译阶段被提前开采。

Linux
提供了大气的教育软件和多数优良的工具来协助种种年龄段和年级的上学的儿童上学和演习形形色色的习题,那常常是以互相的主意开展。“与
Linux
一同学学”这一文山会海的稿子则为这么些琳琅满指标教育软件和行使提供了三个介绍。

应用动态链接库的利润有:
1.
当真的达成了函数库和程序的分手,库函数提供者不必关切程序的任何一些。
他们只必要提供可用的动态函数库就可以。

图片 2

利用动态链接库的补益有:
1.
实在的兑现了函数库和顺序的分离,库函数提供者不必关怀程序的别样一些。
她们只必要提供可用的动态函数库就能够。

数学是计算机的骨干。若是有人预期四个类如 GNU/ Linux
那样的赫赫的操作系统正确而严苛,那么这便是数学研究所起到的作用。假诺你在谋求一些数学应用程序,那么您将不会深感失望。Linux
提供了很多美好的工具使得数学看起来和您曾经做过的一致令人恐惧,但骨子里他们会简化你使用它的措施。

  1. 让程序的提拔变得轻易
    如若动态链接库有改动,不必去编写翻译整个可实行程序,让程序支付变得低价轻松。
    顾客只须求编写翻译这些动态链接库,然后将其copy到动态链接库原来的存放地方,重国民党的新生活运动行程序就可以。

割一块大小512字节大小的公文出来 。

  1. 让程序的提高变得轻易
    若果动态链接库有退换,不必去编写翻译整个可施行程序,让程序开采变得低价轻松。
    顾客只必要编译这一个动态链接库,然后将其copy到动态链接库原来的存放地方,重国民党的新生活运动行程序就能够。

 

接下去就现实学习怎么使用动态链接库的这一个特点,以利于程序开拓。
具体步骤如下:

下一场,将它与巡回设备/dev/loop0连接在一块儿。

接下去就现实学习怎样采用动态链接库的那么些特性,以福利程序支付。
具体步骤如下:

Gnuplot

Gnuplot
是三个适用于分歧平台的通令行脚本化和多效果与利益的图纸工具。固然它的名字中包括“GNU”,不过它而不是GNU
操作系统的一片段。纵然不是随便授权,但它是无需付费软件(那意味它受版权珍贵,但免费应用)。

要在 Ubuntu
系统(恐怕衍生系统)上设置 gnuplot,输入:

  1. sudoapt-get install gnuplot gnuplot-x11

跻身七个终极窗口。运营该程序,输入:

  1. gnuplot

你会看见一个轻巧的指令行分界面:

图片 3

learnmath-gnuplot

在里面你可以从来输入函数起先。绘图命令将绘制二个曲线图。

输入内容,比如,

  1. plot sin(x)/x

随着gnuplot的提醒,将会张开三个新的窗口,图像便会在里面表现。

图片 4

learnmath-gnuplot-plot1

您也能够立刻设置设置那么些图的例外性质,比方像那样钦点“title”

  1. plot sin(x) title 'Sine Function', tan(x) title 'Tangent'

图片 5

learnmath-gnuplot-plot2

你能够做的更加深入一些,使用splot命令绘制3D图形:

  1. splot sin(x*y/20)

图片 6

learnmath-gnuplot-plot3

其一图片窗口有几当中央的安插选项,

图片 7

learnmath-gnuplot-options

但是gnuplot的确实力量在于在它的命令行和本子效用,gnuplot更完整的文书档案在杜克高校网址上面找到,带有这几个英雄的教程的原始版本。

 

  1. 规定所选择的函数库所在的系统的职责,可以选拔find命令进行检索
    sh-3.2# find / -name “libtest.so”

  2. 将编写翻译好的.so文件copy到相应的步子1找到的任务,
    sh-3.2# mount -o sync -t vfat /dev/sda1 /mnt/
    中间参数-o带sync参数用来内定该分区是以sync方式展开写操作;
    参数-t用来钦点待mount的分区的文件系统类型。

  3. 再一次运营那个程序,那时程序就是加载了新的动态链接库运维了。

  4. 采纳ldd命令能够用来查看程序信赖于怎么着动态链接库
    sh-# ldd ./test_main
            libc.so.6 => /lib/libc.so.6 (0x40113000)
            /lib/ld-linux.so.3 (0x40022000)
    sh-#
    至于ldd能够仿照效法上面那篇作品,

  1. losetup /dev/loop0 /opt/test 
  2.  
  3. losetup将循环设备与公事再三再四在同步,针文件模拟 成整个文件系统,让客户 
  4. 能够将其正是硬盘驱动器,光驱或软驱,并挂入当前点名目录来行使。 
  5. 收益是,纵然那些文件系统崩溃,也不会影响到大家任何系统的常规动作。 
  6. 也足以道具一个密码:
  7. losetup -e 1234 /dev/loop0
  1. 显明所利用的函数库所在的系统的职位,能够运用find命令实行搜寻
    sh-3.2# find / -name “libtest.so”

  2. 将编写翻译好的.so文件copy到相应的步骤1找到的职位,
    sh-3.2# mount -o sync -t vfat /dev/sda1 /mnt/
    里头参数-o带sync参数用来钦定该分区是以sync情势开展写操作;
    参数-t用来内定待mount的分区的文件系统类型。

  3. 重复运转那些顺序,那时程序正是加载了新的动态链接库运营了。

  4. 运用ldd命令能够用来查看程序注重于怎么样动态链接库
    sh-# ldd ./test_main
            libc.so.6 => /lib/libc.so.6 (0x40113000)
            /lib/ld-linux.so.3 (0x40022000)
    sh-#
    关于ldd可以参照上面那篇作品,
    http://www.linuxidc.com/Linux/2014-01/94718.htm

Maxima

Maxima 是三个来源 Macsyma
开采的贰个Computer代数系统,依据它的 SourceForge 页面所述:

“马克西姆a
是三个操作符号和数值表明式的系统,包罗微分,积分,Taylor级数,拉普Russ改动,常微分方程,线性方程组,多项式,群集,列表,向量,矩阵和张量等。马克西姆a
通过标准的分数,放肆精度的子弹头和可变精度浮点数发生高精度的计量结果。Maxima
能够以二维和三个维度的格局绘制函数和多少。“

大非常多Ubuntu衍生系统都有 马克西姆a
二进制包以及它的图形分界面,要设置这么些软件包,输入:

  1. sudoapt-get install maxima xmaxima wxmaxima

在顶峰窗口中,马克西姆a 是贰个从未怎么 UI 的命令行工具,但假若您起来
wxmaxima,你会跻身二个简单易行但功用庞大的图形顾客界面。

图片 8

learnmath-maxima

您能够通过简单的输入来最早。(提醒:回车会扩展更加多的行,固然您想计算一个表明式,使用“Shift

  • Enter”。)

马克西姆a 能够用来一些轻便易行的难题,由此也可以用作多少个总计器:

图片 9

learnmath-maxima-1and1

以及部分更头晕目眩的题材:

图片 10

learnmath-maxima-functions

它使用gnuplot使得绘制轻便:

图片 11

learnmath-maxima-plot

大概绘制一些错综相连的图样。

图片 12

learnmath-maxima-plot2

(它供给 gnuplot-X11 的软件包来展现它们。)

除外将表达式表示为图形,马克西姆a 也得以用 latex
格式导出它们,或然通过右键快捷菜单举办一些常用操作.

图片 13

learnmath-maxima-menu

可是其主菜单依然提供了大气重磅成效,当然 马克西姆a
的作用远不仅如此,这里也可能有贰个广泛利用的在线文书档案。

 

假若程序很庞大,怎样确认有些模块或某个函数是属于哪一个动态链接库(在多个比很大系的统中是有望的)?
万一函数位于有个别动态链接库中,则足以动用objdump将动态链接库举办反汇编,然后在结果中探寻内定的函数,
sh-3.2# objdump -d ./libtest.so | grep function

 

假设程序很强大,怎么样确认某个模块或某些函数是属于哪多个动态链接库(在一个十分的大系的统中是有望的)?
即使函数位于有个别动态链接库中,则能够应用objdump将动态链接库进行反汇编,然后在结果中探究钦点的函数,
sh-3.2# objdump -d ./libtest.so | grep function

总结

数学不是一门轻松的学科,那几个在 Linux
上的精美软件也绝非使得数学特别便于,不过这几个使用使得应用数学变得越来越简短和便利。以上三种选择都只是介绍一下
Linux
所提供的。要是你是当真从事数学和急需越多的功能与充足的文书档案,那你更应有看看那几个
Mathbuntu 项目。


via:

作者:Attila Orosz
译者:KnightJoker
校对:wxyD

本文由 LCTT
原创编写翻译,Linux中国 荣誉推出

本文恒久更新链接地址:http://www.linuxidc.com/Linux/2015-11/124905.htm

图片 14

接纳readelf或nm都无法儿准确的固化函数处于哪个.so文件中,
sh-3.2# readelf -s ./libtest.so | grep function
sh-3.2# nm ./libtest.so | grep function
案由是那个符号既会在函数所在的库中查到,同期在调用那几个函数的库中也能查到。

  1. mke2fs /dev/loop0 
  2. mount -o rw,acl /dev/loop0 /mnt 

使用readelf或nm都无法精确的一直函数处于哪个.so文件中,
sh-3.2# readelf -s ./libtest.so | grep function
sh-3.2# nm ./libtest.so | grep function
原因是这一个标识既会在函数所在的库中查到,同期在调用那个函数的库中也能查到。

调节Linux动态链接库导出函数

那规范,景况就抓实了,以后的实施操作都在那一个文件系统上做。

连带阅读

Ubuntu下的进行动态链接库成立和使用的点子

设置ACL的命令是那般的:

调节Linux动态链接库导出函数
http://www.linuxidc.com/Linux/2013-04/83614.htm

Linux动态链接库导出函数

setfacl -m u:用户:rwx file

Ubuntu下的张开动态链接库创造和应用的方法
http://www.linuxidc.com/Linux/2013-04/83293.htm

Linux下选用动态链接库

做个实验看看效果 :

Linux动态链接库导出函数
http://www.linuxidc.com/Linux/2013-04/82653.htm

Linux下边系统开荒Makefile须知(动态链接库的深深通晓)

图片 15

Linux下使用动态链接库
http://www.linuxidc.com/Linux/2013-02/79669.htm

1. 静态库
静态库的链接工作是在前后相继编写翻译阶段完结的。
各个需求调用该静态库的次第中都有一份该库…

那标准,对于由root创立的文书,客商test1也会有了可读可写的权杖了。

Linux下边系统开荒Makefile须知(动态链接库的深入精晓)
http://www.linuxidc.com/Linux/2012-12/76158.htm

图片 16

图片 17

图片 18

相关文章