写一条linux shell命令,使用objdump在当前文件夹及其子文件夹的所有.a文件中寻找my_func_name这个函数名字
时间: 2024-03-18 12:42:22 浏览: 139
可以使用以下命令来寻找名为my_func_name的函数:
```bash
find . -name "*.a" -exec objdump -T {} \; | grep my_func_name
```
这个命令会在当前文件夹及其子文件夹中查找所有名为*.a的文件,并使用objdump命令来列出这些文件中的所有符号表。然后,grep命令会在objdump输出中查找名为my_func_name的函数名,并将结果输出到终端。
相关问题
获取函数代码段大小linux命令objdump,C语言
可以使用Linux命令`objdump`来获取函数代码段的大小。以下是使用objdump和C语言编写的示例代码:
使用objdump:
```
objdump -d <binary_file> | awk '/^[[:xdigit:]]+ <function_name>/{flag=1;next}/^[[:xdigit:]]+ /{if(flag){print "";exit}}{flag=0}' | wc -c
```
其中,`<binary_file>`是目标二进制文件的路径,`<function_name>`是要获取大小的函数名称。
使用C语言:
```c
#include <stdio.h>
#include <stdlib.h>
size_t get_function_size(const char* binary_file, const char* function_name) {
size_t size = 0;
char cmd[1024];
sprintf(cmd, "objdump -d %s | awk '/^[[:xdigit:]]+ <%s>/{flag=1;next}/^[[:xdigit:]]+ /{if(flag){print "";exit}}{flag=0}' | wc -c", binary_file, function_name);
FILE* fp = popen(cmd, "r");
if (fp) {
fscanf(fp, "%lu", &size);
pclose(fp);
}
return size;
}
int main() {
size_t size = get_function_size("/path/to/binary_file", "function_name");
printf("Function size: %lu bytes\n", size);
return 0;
}
```
其中,`binary_file`是目标二进制文件的路径,`function_name`是要获取大小的函数名称。该函数使用了`popen()`函数来执行`objdump`命令并获取输出结果。
find . -type f -name "*.elf" -exec arm-none-eabi-objdump -t {} \; | grep my_symbol_name是干啥的
这个命令是用来在当前目录(包括子目录)中查找所有扩展名为.elf的文件,并对每个文件执行arm-none-eabi-objdump命令来查看文件中的符号表信息。然后使用grep过滤出符号表中包含"my_symbol_name"的行,最终输出结果。简单地说,这个命令是用来查找符号表中是否存在名为"my_symbol_name"的符号。
阅读全文