Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Linux.so文件中删除未使用的代码?_Linux_Shared Libraries - Fatal编程技术网

如何从Linux.so文件中删除未使用的代码?

如何从Linux.so文件中删除未使用的代码?,linux,shared-libraries,Linux,Shared Libraries,我有二进制文件X、Y、Z,它们使用libA.so、libB.so和libD.so(由ldd打印)。是否有一种工具可以通过删除X、Y和Z中任何一个都不使用的所有符号(以及相关代码和数据),使libA.so、libB.so和libD.so文件变小?我无法访问程序或.so文件的源代码 我想我在几年前见过这样一个.so剥离工具,但我忘记了细节。我刚找到,但它需要原始的.o对象文件,libA.so等是从这些文件中构建的 我也发现了。它还需要.o文件,例如/lib/libc_pic.a。但是它使用起来非常方

我有二进制文件X、Y、Z,它们使用libA.so、libB.so和libD.so(由
ldd
打印)。是否有一种工具可以通过删除X、Y和Z中任何一个都不使用的所有符号(以及相关代码和数据),使libA.so、libB.so和libD.so文件变小?我无法访问程序或.so文件的源代码

我想我在几年前见过这样一个.so剥离工具,但我忘记了细节。

我刚找到,但它需要原始的.o对象文件,libA.so等是从这些文件中构建的


我也发现了。它还需要.o文件,例如
/lib/libc_pic.a
。但是它使用起来非常方便,安装也很简单:
sudo apt get install mklibs
。请注意,大多数共享库没有预编译的
*\u pic.a
,因此不会节省大小。

程序是
strip
,但这不会删除代码和数据。
libA。因此
可以被其他应用程序使用,因此您不应该修改它。@basilestrynkevitch:no,
libA.so
的此实例不会也不会被此系统上除X、Y和Z以外的任何应用程序使用。“我百分之百确定我确实想改变它。”“怀疑:我认为用脱衣舞是不可能的。”。如果您这样认为,请给我一个包含X、Y、Z、libA.so、libB.so和libD.so的命令行。请小心使用
mklibs
,因为它可能会删除dlopened库(由应用程序“手动”加载),因为它看不到它们。