修改so庫中的依賴名

2022-02-02 07:36:13 字數 1729 閱讀 1261

以suitespares中的libcholmod.so.3.0.13,先使用命令readelf -d libcholmod.so.3.0.13讀取其need庫如下:

標記        型別      名稱/值

0x00000001 (needed) 共享庫:[libm.so.6]

0x00000001 (needed) 共享庫:[libamd.so.2]

0x00000001 (needed) 共享庫:[libcolamd.so.2]

0x00000001 (needed) 共享庫:[libsuitesparseconfig.so.5]

0x00000001 (needed) 共享庫:[libccolamd.so.2]

0x00000001 (needed) 共享庫:[libcamd.so.2]

0x00000001 (needed) 共享庫:[libmetis.so]

0x00000001 (needed) 共享庫:[liblapack.so.3]

0x00000001 (needed) 共享庫:[libblas.so.3]

0x00000001 (needed) 共享庫:[libgomp.so.1]

0x00000001 (needed) 共享庫:[libgcc_s.so.1]

0x00000001 (needed) 共享庫:[libpthread.so.0]

0x00000001 (needed) 共享庫:[libc.so.6]

0x00000001 (needed) 共享庫:[ld-linux-armhf.so.3]

0x0000000e (soname) library soname: [libcholmod.so.3]

0x0000000c (init) 0x4c04

在android中,沒有像linux中一樣有linkname, soname, realname這種版本控制,所以,我們可以把needed中的這種帶版本的soname改為linkname,使用命令patchelf --replace-needed libm.so.6 libm.so libcholmod.so.3.0.13,即把其依賴的libm.so.6改為了libm.so

標記        型別      名稱/值

0x00000001 (needed) 共享庫:[libm.so]

0x00000001 (needed) 共享庫:[libamd.so.2]

使用命令patchelf --set-soname libnewname.so.3.4.5 path/to/libmylibrary.so.1.2.3,結果:由libcholmod.so.3變成了libcholmod.so

0x00000001 (needed)  共享庫:[ld-linux-armhf.so.3]

0x0000000e (soname) library soname: [libcholmod.so]

0x0000000c (init) 0x4c04

0x0000000d (fini) 0xc2674

mv libcholmod.so.3.0.13 libcholmod.so

mysql修改庫名 MySQL中修改庫名的操作教程

mysql在5.1引入了乙個rename database操作,但在mysql5.1.23後又不支援這個命令。可以說是乙個實驗性的功能,沒有在生產中支援過 mysql 5.1 release在mysql 5.1.30 那麼生產中我們有時為了追求完美需要改一下庫名。怎麼操作呢?這裡提供乙個變通的方法。...

動態so庫修改方法

對於linux和android開發者,有時可能需要檢視或者修改.so檔案,下面來講述如何檢視或者修改so檔案。ida pro 010 editor 注意安裝完ida後通常會生成兩個快捷圖示32位和64位,這個是對應於so的,如果so是32位的,則開啟32位的32位的快捷圖示 開啟之後,載入so,通常...

so庫建立,使用和依賴關係

我對so庫的name的理解 libtest.so libtest.so.1 libtest.so.1.1 libtest.so 用在gcc的編譯選項 ltest,在生成程式時會去尋找libtest.so libtest.so.1.1 so庫的全名,包含major version and minor ...