歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 靜態函數庫與動態函數庫區別、應用--ldconfig、ldd

靜態函數庫與動態函數庫區別、應用--ldconfig、ldd

日期:2017/3/1 16:36:13   编辑:關於Linux
靜態函數庫與動態函數庫區別、應用--ldconfig、ldd 1、函數庫靜態與動態區別: a、靜態函數庫:副檔名為 .a,是把整個包括入程序裡的,程序會比較大,升級麻煩 www.2cto.com b、動態函數庫:副檔名為 .so,鏈接的方式,靈活,程序小,主推 2、將動態函數庫放入內存裡提高速度: 首先,我們必須要在 /etc/ld.so.conf 裡面寫下‘ 想要讀入快取記憶體當中的動態函式庫所在的目錄’,注意喔, 是目錄而不是檔案;接下來則是利用 ldconfig 這個執行檔將 /etc/ld.so.conf 的資料讀入快取當中;同時也將資料記錄一份在 /etc/ld.so.cache 這個檔案當中吶! www.2cto.com 例子:假設我的 MySQL 資料庫函式庫在 /usr/lib/mysql 當中,如何讀進 cache ? [root@www ~]# vi /etc/ld.so.conf include ld.so.conf.d/*.conf /usr/lib/mysql <==這一行新增的啦! [root@www ~]# ldconfig <==畫面上不會顯示任何的資訊,不要太緊張!正常的! [root@www ~]# ldconfig -p <==列出目前有的所有函式庫資料內容 (在 /etc/ld.so.cache 內的資料!) 3、某個程序調用了什麼動態庫,某動態庫相關的其他庫是什麼: [root@www ~]# ldd [-vdr] [filename] 選項與參數: -v :列出所有內容資訊; -d :重新將資料有遺失的 link 點秀出來! -r :將 ELF 有關的錯誤內容秀出來! 范例一:找出 /usr/bin/passwd 這個檔案的函式庫資料 [root@www ~]# ldd /usr/bin/passwd ....(前面省略).... libaudit.so.0 => /lib/libaudit.so.0 (0x00494000) <==SELinux libselinux.so.1 => /lib/libselinux.so.1 (0x00101000) <==SELinux libc.so.6 => /lib/libc.so.6 (0x00b99000) libpam.so.0 => /lib/libpam.so.0 (0x004ab000) <==PAM 模組 ....(底下省略).... # 我們前言的部分不是一直提到 passwd 有使用到 pam 的模組嗎!怎麼知道? # 利用 ldd 察看一下這個檔案,看到 libpam.so 了吧?這就是 pam 提供的函式庫 范例二:找出 /lib/libc.so.6 這個函式的相關其他函式庫! [root@www ~]# ldd -v /lib/libc.so.6 /lib/ld-linux.so.2 (0x00ab3000) linux-gate.so.1 => (0x00636000) Version information: <==使用 -v 選項,增加顯示其他版本資訊! /lib/libc.so.6: ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
Copyright © Linux教程網 All Rights Reserved