我如何使用 find、nm 和 grep 在许多共享库中查找符号?
how do i use find, nm, and grep to find a symbol among many shared libraries?
我正在努力使用正确的命令来执行以下操作:
查找所有包含特定符号的共享库 (*.so)。
这是我试过的:
find -iname '*.so*' -exec nm {} \; | grep -H _ZN6QDebugD1Ev
上面给出了一些找到符号的输出,但没有指出符号出现的文件名。我给 grep 的任何标志告诉它打印文件名都丢失了,因为 grep 是从标准输入输入的.
(standard input): U _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
(standard input):0015e928 T _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
另一次尝试:
find -iname '*.so*' -exec nm {} \; -exec grep _ZN6QDebugD1Ev {} \;
这行不通,因为两位执行官完全独立。
我该怎么办?
将“-A”选项传递给 nm,它将在其输出前加上文件名。然后只需 grep 查找您感兴趣的符号,例如:
find -iname '*.so*' -exec nm -A {} \; | grep _ZN6QDebugD1Ev
我正在努力使用正确的命令来执行以下操作:
查找所有包含特定符号的共享库 (*.so)。
这是我试过的:
find -iname '*.so*' -exec nm {} \; | grep -H _ZN6QDebugD1Ev
上面给出了一些找到符号的输出,但没有指出符号出现的文件名。我给 grep 的任何标志告诉它打印文件名都丢失了,因为 grep 是从标准输入输入的.
(standard input): U _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
(standard input):0015e928 T _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
(standard input): U _ZN6QDebugD1Ev
另一次尝试:
find -iname '*.so*' -exec nm {} \; -exec grep _ZN6QDebugD1Ev {} \;
这行不通,因为两位执行官完全独立。
我该怎么办?
将“-A”选项传递给 nm,它将在其输出前加上文件名。然后只需 grep 查找您感兴趣的符号,例如:
find -iname '*.so*' -exec nm -A {} \; | grep _ZN6QDebugD1Ev