查詢並複製程式用到的庫

2021-04-13 04:48:36 字數 4472 閱讀 3793

mklibs或mklibs-copy是個好東西(ubuntu中是兩個單獨的軟體包),可以把乙個elf檔案用到的庫給找出來,然後複製到乙個指定的地方。

基本用法是一樣的:

mklibs

/mklibs-

copy

-d dest_dir file

其中:dest_dir是用來存放找出來的so庫的,file是要用來分析的檔案。

stlxv@stlxvcomputer:~

/tmp

$mklibs-readelf --help

usage: mklibs-readelf [option]

...file

...prints informations about elf shared objects and executables

.mandatory arguments to long options are mandatory 

forshort options too.-i

,--print

-interp                    

print

interpreter of executable-n,

--print

-needed                    

print

needed shared libs-r,

--print

-rpath                     

print

rpath setting-s,

--print

-soname                    

print

soname of shared object-p,

--print

-symbols-provided          

print

provided symbols-u,

--print

-symbols-undefined         

print

undefined symbols

--help                            display this help and 

exit

--version                         output version information and 

exit

下面是兩個例子:

mklibs

stlxv@stlxvcomputer:~

$mklibs -d tmp//

usr/

bin/

ruby

i: using ld-linux.so

.2as dynamic linker

.i: library reduction pass 17

symbols,7

unresolved

i: library reduction pass 

2285

symbols,16

unresolved

i: library reduction pass 

3285

symbols,3

unresolved

i: library reduction pass 

4285

symbols,3

unresolved

stlxv@stlxvcomputer:~

$ls -

lhtmp

/總用量 2.

3m-rwxr-xr-x 

1stlxv stlxv 107k 

2007-07

-1920:

31ld-linux.so

.2-rw-r--r-- 

1stlxv stlxv  22k 

2007-07

-1920:

31libcrypt.so

.1-rw-r--r-- 

1stlxv stlxv 1.

2m 2007-07

-1920:

31libc.so

.6-rw-r--r-- 

1stlxv stlxv 9.

5k 2007-07

-1920:

31libdl.so

.2-rw-r--r-- 

1stlxv stlxv 146k 

2007-07

-1920:

31libm.so

.6-rw-r--r-- 

1stlxv stlxv  79k 

2007-07

-1920:

31libpthread.so

.0-rw-r--r-- 

1stlxv stlxv 762k 

2007-07

-1920:

31libruby1.8

.so.1.8

stlxv@stlxvcomputer:~

$ldd 

/usr

/bin

/ruby

linux-gate.so

.1=>

(0xffffe000

)libruby1.8

.so.1.8

=>

/usr

/lib

/libruby1.8

.so.1.8

(0xb7e04000

)libpthread.so

.0=>

/lib

/tls

/i686

/cmov

/libpthread.so

.0(0xb7ded000

)libdl.so

.2=>

/lib

/tls

/i686

/cmov

/libdl.so

.2(0xb7de8000

)libcrypt.so

.1=>

/lib

/tls

/i686

/cmov

/libcrypt.so

.1(0xb7dba000

)libm.so

.6=>

/lib

/tls

/i686

/cmov

/libm.so

.6(0xb7d93000

)libc.so

.6=>

/lib

/tls

/i686

/cmov

/libc.so

.6(0xb7c52000)/

lib/

ld-linux.so

.2(0xb7eee000)

mklibs-copy

stlxv@stlxvcomputer:~

$mklibs-

copy

-d tmp//

usr/

bin/

ruby

stlxv@stlxvcomputer:~

$ls -

lhtmp

/總用量 2.

4m-rwxr-xr-x 

1stlxv stlxv 107k 

2007-07

-1920:

33ld-linux.so

.2-rw-r--r-- 

1stlxv stlxv  22k 

2007-07

-1920:

33libcrypt.so

.1-rwxr-xr-x 

1stlxv stlxv 1.

2m 2007-07

-1920:

33libc.so

.6-rw-r--r-- 

1stlxv stlxv 9.

5k 2007-07

-1920:

33libdl.so

.2-rw-r--r-- 

1stlxv stlxv 146k 

2007-07

-1920:

33libm.so

.6-rwxr-xr-x 

1stlxv stlxv 106k 

2007-07

-1920:

33libpthread.so

.0-rw-r--r-- 

1stlxv stlxv 762k 

2007-07

-1920:

33libruby1.8

.so.1.8

stlxv@stlxvcomputer:~

$mklibs-readelf -n 

/usr

/bin

/ruby

libruby1.8

.so.1.8

libpthread.so

.0libdl.so

.2libcrypt.so

.1libm.so

.6libc.so

.6

在命令列中加引數的檔案複製程式

這篇博文介紹使用命令列引數的程式設計方法,載體是用於檔案複製的程式。這也是我用markdown編輯器寫的第一篇博文。markdown在寫 逆襲大學 時用過,寫博文是第一次。下面的程式,可以完成由a.txt到b.txt的複製。include include using namespace std in...

在命令列中加引數的檔案複製程式

這篇博文介紹使用命令列引數的程式設計方法,載體是用於檔案複製的程式。這也是我用markdown編輯器寫的第一篇博文。markdown在寫 逆襲大學 時用過,寫博文是第一次。下面的程式,可以完成由a.txt到b.txt的複製。include include using namespace std in...

寫程式資料庫設計會用到的資料庫語句

查詢表結構 select 表名 case when a.colorder 1 then d.name else end,表說明 case when a.colorder 1 then isnull f.value,else end,欄位名 a.name,標識 case when columnprop...