strings命令:打印文件中可打印的字符。这个文件可以是文本文件(test.c),可执行文件(test),动态链接库(test.o),静态链接库(test.a)
在软件开发中,我们经常需要修改代码、并生成静态库、动态库或者可执行文件,有时候,工程太大,难以确定自己的代码是否正确编译到库中去了。此时我们可以使用strings命令。
例如:
先建立一个test.c
#include <stdio.h>
int add(int x,int y)
{
return x+y;
}
int main()
{
int a=1;
int b=2;
int c=add(a,b);
printf("oh my dear , c is %d\n",c);
return 0;
}
接着生成可执行文件:gcc test.c
最后查看当前文件夹下所有文件中是否包含"my dear"字段:strings -f * | grep “my dear”
a.out: oh my dear , c is %d
test.c: printf("oh my dear , c is %d\n",c);
因此,我们可以通过strings命令快速知道某个.c/.cpp文件编译到哪个.so库中去了。
例如:在某个大型的软件开发中,假设有100个.c/.cpp文件,这些.c/.cpp文件最终生成10个.so库,那么我们如何快速知道某个.c/.cpp文件编译到哪个.so库中去了呢?
方法一:看makefile文件
方法二:strings -f “*.so” | grep “xxxxx”