linux库
A. linux libidn是什么库
GNU Libidn 是一款通过IETF国际域名(IDN)实施字符串预处理、Punycode 和 IDNA规格定义的工具。它用于国际化的字符串(如域名标签,用户名和密码),以增加字符串输入和字符串比较的工作。该库包含一个通用的字符串预处理实施,正常化的Unicode3.2 NFKC,映像和禁止的字符,双向字符处理。它包含iSCSI、Kerberos 5、Nameprep、SASL 和 XMPP配置文件,通过IDNA的支持兼容Punycode 和ASCII编码(ACE)。
B. linux中库文件的作用
yum是一个软件安装源,rpm是一个软件包管理程序。
yum可以在线安装软件,可以自动解决依赖性问题。
比如你联网的情况下要安装httpd,你就使用yum install httpd
而你在网上下载了rpm包,就使用rpm -ivh httpd.rpm
使用rpm的话,需要自己解决依赖性问题。
C. 如何轻松清除Linux中不需要的存储库
在Ubuntu Linux上,使用这个工具可以通过下面两种方式:
1.从命令行
2.来自Ubuntu软件(又名GNOME软件)
打开该工具的命令是software-properties-gtk。如果你不想用命令行,那打开Ubuntu软件,点击菜单(它出现在桌面的顶部),选择Software & Updates。
工具打开后,您将看到六个选项卡(图A)。
要使用的选项卡是其他软件。单击它,您将看到添加的所有第三方存储库(图B)。
为了进行比较,我在已经使用了一年多的Elementary OS上打开了software-properties-gtk工具。第三方存储库的数量非常多(图C)。
要删除存储库,您只需在列表中滚动并取消对不希望包含的内容的检查。最初,系统会提示您输入sudo密码。在此之后,您应该能够梳理添加的存储库(根据需要删除),而不必再次输入密码。您会发现每次取消选中repo时,software-properties-gtk都可能会滚动回到列表的顶部,这个设置不人性化。完成列表后,单击“关闭”按钮。然后,系统将提示您重新加载有关可用软件的信息(也称为apt更新)。这样做,一旦更新完成,software-properties-gtk将关闭。就这样。您已成功清理了存储库。
D. linux动态库和静态库的区别
接静态库其实从某种意义上来说只不过它操作的对象是目标代码而不是源码而已。因为静态库被链接后库就直接嵌入可执行文件中了,这样就带来了两个问题。
(1)首先就是系统空间被浪费了。如果多个程序链接了同一个库,则每一个生成的可执行文件就都会有一个库的副本,必然会浪费系统空间。
(2)再者,一旦发现了库中有bug,挽救起来就比较麻烦了。必须一一把链接该库的程序找出来,然后重新编译。
而动态库的出现正弥补了静态库的以上弊端。因为动态库是在程序运行时被链接的,所以磁盘上只须保留一份副本,因此节约了磁盘空间。如果发现了bug或要升级也很简单,只要用新的库把原来的替换掉就行了。
但是静态库的优点:
编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。
静态库的名字一般是libxxx.a(Linux)
动态库的名字一般是libxxx.so(Linux),有时候也是 libxxx.so.major.minor,xxxx是该lib的名称,major是主版本号, minor是副版本号。
E. 查看linux当前加载库文件的命令
ldd <可执行文件名> 查看可执行文件链接了哪些 系统动态链接库
nm <可执行文件名> 查看可执行文件里面有哪些符号
strip <可执行文件名> 去除符号表可以给可执行文件瘦身
如果我们想从可执行程序里面提取出来一点什么文本信息的话,还可以用strings命令
strings <可执行文件名>
Linux操作系统上面的动态共享库大致分为三类:
1、操作系统级别的共享库和基础的系统工具库
比方说libc.so, libz.so, libpthread.so等等,这些系统库会被放在/lib和/usr/lib目录下面,如果是64位操作系统,还会有/lib64和/usr /lib64目录。如果操作系统带有图形界面,那么还会有/usr/X11R6/lib目录,如果是64位操作系统,还有/usr/X11R6 /lib64目录。此外还可能有其他特定Linux版本的系统库目录。
这些系统库文件的完整和版本的正确,确保了Linux上面各种程序能够正常的运行。
2、应用程序级别的系统共享库
并非操作系统自带,但是可能被很多应用程序所共享的库,一般会被放在/usr/local/lib和/usr/local/lib64这两个目录下面。很多你自行编译安装的程序都会在编译的时候自动把/usr/local/lib加入gcc的-L参数,而在运行的时候自动到/usr/local /lib下面去寻找共享库。
以上两类的动态共享库,应用程序会自动寻找到他们,并不需要你额外的设置和担心。这是为什么呢?因为以上这些目录默认就被加入到动态链接程序的搜索路径里面了。Linux的系统共享库搜索路径定义在/etc/ld.so.conf这个配置文件里面。这个文件的内容格式大致如下:
/usr/X11R6/lib64
/usr/X11R6/lib
/usr/local/lib
/lib64
/lib
/usr/lib64
/usr/lib
/usr/local/lib64
/usr/local/ImageMagick/lib
假设我们自己编译安装的ImageMagick图形库在/usr/local/ImageMagick目录下面,并且希望其他应用程序都可以使用 ImageMagick的动态共享库,那么我们只需要把/usr/local/ImageMagick/lib目录加入/etc/ld.so.conf文件里面,然后执行:ldconfig 命令即可。
ldcofig将搜索以上所有的目录,为共享库建立一个缓存文件/etc/ld.so.cache。为了确认ldconfig已经搜索到ImageMagick的库,我们可以用上面介绍的strings命令从ld.so.cache里面抽取文本信息来检查一下:
strings /etc/ld.so.cache | grep ImageMagick
输出结果为:
/usr/local/ImageMagick/lib/libWand.so.10
/usr/local/ImageMagick/lib/libWand.so
/usr/local/ImageMagick/lib/libMagick.so.10
/usr/local/ImageMagick/lib/libMagick.so
/usr/local/ImageMagick/lib/libMagick++.so.10
/usr/local/ImageMagick/lib/libMagick++.so
已经成功了!
3、应用程序独享的动态共享库
有很多共享库只被特定的应用程序使用,那么就没有必要加入系统库路径,以免应用程序的共享库之间发生版本冲突。因此Linux还可以通过设置环境变量LD_LIBRARY_PATH来临时指定应用程序的共享库搜索路径,就像我们上面举的那个例子一样,我们可以在应用程序的启动脚本里面预先设置 LD_LIBRARY_PATH,指定本应用程序附加的共享库搜索路径,从而让应用程序找到它。
F. linux下的math库在那个文件夹
首先你要明白 -lm的用意 就是寻找libm.o这个库的某个函数的所有函数(我估计是sprt吧),寻找完成之后才能进行完整的编译。而math并不是一个库 而是函数,函数有时候要多个库支持,所以要用-lm的方法把所有库整合一起 才能调用这个函数。
G. linux下的库是什么意思
库相当于资源库 比如你装修房子要用地板 就可以看作是库 是别人已经做好的直接供你使用 而不需要看书锯木上漆等自己亲力亲为的工作
H. 请问linux里头文件与库文件有什么区别
头文件中有函数的申明,库文件实现函数的定义。
比如,printf函数。使用时应包括stdio.h,打开stdio.h你只能看到,printf这
个函数的申明,却看不到printf具体是怎么实现的,而函数的实现在相应的C库
中。而库文件一般是以二进制形式而不是C源文件形式提供给用户使用的。程序
中包括了stdio.h这个头文件。链接器就能根据头件中的信息找到printf这个函
数的实现并链接进这个程序代码段里。
总结起来就是,库文件通过头文件向外导出接口。用户通过头文件找到库文件中
函数实现的代码从而把这段代码链接到用户程序中去。
I. linux的 常见库有哪些
开源的有mySQL postgreSQL 目前主要也就这两个
商业的就多得太多了 Oracle Sybase DB2 Infomix 等等
J. Linux系统的库文件一般放在( )目录下
Linux的系统文件放在/bin、/sbin和/usr目录下。/bin是比较重要的系统二进制文件,都可以在单用户模式下执行,cat和ls命令都在这里。
/usr命令包含所有系统类的命令和函数库,/sbin命令包含的是只能用root用户才能执行的命令。这三个目录都是只有root用户才有写入权限。更多命令介绍可查看“Linux命令大全”。