Linux下查找一個(gè)函數(shù)在哪個(gè)庫(kù)文件中
1、默認(rèn)狀態(tài)下,gcc并不搜索數(shù)學(xué)庫(kù),-lm的意思是gcc需要搜索標(biāo)準(zhǔn)目錄下(本例中是/usr/lib目錄)名為libm.a的庫(kù)文件,從而找出需要的數(shù)學(xué)函數(shù),正確鏈接。
2、用man 3 printf 就可以看到頭文件。有時(shí)有些函數(shù)的查看需要不同的man庫(kù),具體可以看一下 man man。
3、不過(guò)要使用上面的函數(shù)需要安裝但是需要先enable mbstring 擴(kuò)展庫(kù)。 PHP中的另外一個(gè)函數(shù)iconv也是用來(lái)轉(zhuǎn)換字符串編碼的,與上函數(shù)功能相似。
4、find / -name 文件名\x0d\x0a\x0d\x0aLinux下find命令用法\x0d\x0a\x0d\x0a通過(guò)文件名查找法: \x0d\x0a這個(gè)方法說(shuō)起來(lái)就和在WINDOWS下查找文件一樣容易理解了。
5、動(dòng)態(tài)鏈接庫(kù)的安裝 生成動(dòng)態(tài)鏈接庫(kù)后,一個(gè)很重要的操作是安裝,一般情況下,我們將庫(kù)文件放到系統(tǒng)默認(rèn)的搜索路徑下,常用的有/lib, /usr/lib, /usr/local/lib 。將 動(dòng)態(tài)鏈接庫(kù)放到這三個(gè)中任意個(gè)目錄都可以。
6、該數(shù)據(jù)庫(kù)包含本地所有的文件信息:最后一個(gè)是使用”whereis“命令搜索文件,但是只可以搜索linux系統(tǒng)中的可執(zhí)行文件。
如何在LINUX下查看一個(gè).o文件里有哪些函數(shù)
1、nm可列出.o .a .so中的符號(hào)信息,包括諸如符號(hào)的值,符號(hào)類型及符號(hào)名稱等。所謂符號(hào),通常指定義出的函數(shù),全局變量等等。
2、我們?cè)趯慙inux應(yīng)用程序時(shí),有時(shí)候記不清某個(gè)系統(tǒng)函數(shù)的頭文件,往往要么百度,要么查源碼,這樣做都不方便,費(fèi)時(shí)費(fèi)力。其實(shí),可以用一個(gè)命令搞定:man。
3、gcc 源文件名 -o 目標(biāo)文件名 -Wall Eg:gcc c -o demo -Wall 運(yùn)行 ./demo 就能看到打印了。
4、C++ 標(biāo)準(zhǔn)庫(kù)的文檔,可以在其鏡像點(diǎn)(http://gcc.gnu.org/mirrors.html)中下載。具體的路徑是:libstdc++doxygen/libstdc++-man-xxxxxx.tar.bz2,可找一個(gè)最新日期的下載。
Linux如何查看so中函數(shù)名
1、nm可列出.o .a .so中的符號(hào)信息,包括諸如符號(hào)的值,符號(hào)類型及符號(hào)名稱等。所謂符號(hào),通常指定義出的函數(shù),全局變量等等。
2、/.vimrc文件中 set tags=/home/money/sda8/6232/tags 如果要在代碼中實(shí)時(shí)跟蹤,則光標(biāo)移動(dòng)到函數(shù)名上,使用CTRL+]鍵,按CTRL+t可以返回。如果要跟蹤系統(tǒng)函數(shù),使用shift+K可以自動(dòng)跳轉(zhuǎn)道光標(biāo)所在函數(shù)的手冊(cè)。
3、你拿到一個(gè)libABC.so庫(kù),卻沒(méi)有頭文件,這時(shí)候你該如何知道這個(gè)庫(kù)中定義了哪些函數(shù)呢?Linux/Mac提供了一個(gè)神奇的命令: nm 。
4、nm查看共享庫(kù)so文件中導(dǎo)出函數(shù)列表 查看so文件中的導(dǎo)出函數(shù)表;nm -D mylib.so 列出所有導(dǎo)出的函數(shù),包括mylib.so靜態(tài)鏈接的庫(kù)中的那些導(dǎo)出函數(shù)。
5、對(duì)于動(dòng)太鏈接在程序執(zhí)行過(guò)程由ld.so 通過(guò)變量名去 動(dòng)態(tài)的鏈接到某些庫(kù)的指定函數(shù)。動(dòng)態(tài)鏈接的符號(hào)名不可剔除。說(shuō)到底就是二進(jìn)制程序如果包含變量名,就會(huì)顯示。
如何查看linux動(dòng)態(tài)庫(kù)中包含哪些函數(shù)
1、nm可列出.o .a .so中的符號(hào)信息,包括諸如符號(hào)的值,符號(hào)類型及符號(hào)名稱等。所謂符號(hào),通常指定義出的函數(shù),全局變量等等。
2、系統(tǒng)中的配置文件/etc/ld.so.conf便是動(dòng)態(tài)鏈接庫(kù)的搜索路徑配置文件。在這個(gè)文件內(nèi)存放著可以被Linux共享的動(dòng)態(tài)鏈接庫(kù)所在目錄的名字(系統(tǒng)默認(rèn)的/lib, /usr/lib除外)。 多個(gè)目錄之間可以使用空格,換行符進(jìn)行隔開。
3、在dlopen()函數(shù)以指定模式打開指定的動(dòng)態(tài)鏈接庫(kù)文件,并返回一個(gè)句柄給dlsym()的調(diào)用進(jìn)程。使用dlclose()來(lái)卸載打開的庫(kù)。
4、ldd [選項(xiàng)]... 文件...描述 ldd 輸出在命令行上指定的每個(gè)程序或共享庫(kù)需要的共享庫(kù)。
5、查看靜態(tài)庫(kù):ar -tv test.a 解壓靜態(tài)庫(kù):ar -x test.a 查看程序依賴的動(dòng)態(tài)庫(kù):readelf -a xxx|grep library 如:可以看到,下面的交叉程序hello執(zhí)行依賴于如下兩個(gè)動(dòng)態(tài)庫(kù)。