Linux指令——strings

本文介绍如何利用strings命令从大型软件项目的多个.so文件中快速查找特定源文件的位置。通过示例展示了strings命令结合grep的强大搜索能力,适用于复杂项目中的源代码定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

strings

man strings
strings - print the strings of printable characters in files.
打印文件中可打印的字符。
这个文件可以是文本文件(test.c), 可执行文件(test), 动态链接库(test.o), 静态链接库(test.a).

oliver@ubuntu:/mnt/hgfs/PFolder/Analysis/obj$ ls
analysis.o  main.o
oliver@ubuntu:/mnt/hgfs/PFolder/Analysis/obj$ strings main.o 
```ruby
fork error
/usr/local/arm/hfcctool/bin/../arm-linux-gnueabihf/libc/usr/include/arm-linux-gnueabihf/bits
/usr/local/arm/hfcctool/bin/../arm-linux-gnueabihf/libc/usr/include/arm-linux-gnueabihf/sys
main.c
types.h
types.h
?L=>gL>KL>KN!
long long int
unsigned int
pipe_Raw_Data
GNU C 4.7.3 20130328 (prerelease)
long unsigned int

“`

strings命令很简单, 看起来好像没什么, 但实际有很多用途。
下面, 我来举一个例子。 在大型的软件开发中, 假设有100个.c/.cpp文件, 这个.cpp文件最终生成10个.so库, 那么怎样才能快速知道某个.c/.cpp文件编译到那个.so库中去了呢?
当然, 你可能要说, 看makefile不就知道了。
对, 看makefile肯定可以, 但如下方法更好, 直接用命令:
strings -f *.so | grep “xxxxxx”
可以看到, 源文件test.c和可执行文件中皆有”xxxxxx”串, 一下子就找到了对应的文件,清楚了吧。
如果某.c/.cpp文件编译进了.so库, 那么,strings -f * | grep “xxxxxx”必定可以找到对应的.so文件, 其中”xxxxxx”为该.c/.cpp文件中的某个日志串(比如以printf为打印)。

转载地址:http://blog.youkuaiyun.com/stpeace/article/details/46641069

### 如何在 Linux 上部署 YOLO 模型 #### 编译 YOLO 模型示例 为了编译特定版本的YOLO模型,例如`yolo11`,可以采用以下命令集。这些指令适用于基于Linux的操作环境,在此环境中准备并构建所需的YOLO模型[^1]。 ```bash chmod +x build-linux.sh ./build-linux.sh -t rk3588 -a aarch64 -d yolo11 ``` 上述命令首先赋予脚本执行权限,随后通过指定目标平台(`rk3588`)、架构类型(`aarch64`)以及具体要处理的YOLO变体(`yolo11`)来启动实际的构建过程。 #### RK3588 平台上的 YOLO 部署验证 对于RK3588这样的硬件平台而言,确认所使用的框架和服务版本非常重要。这可以通过查询`rknn_server`和`librknnrt.so`库中的版本信息实现,确保它们处于最新状态以支持最新的YOLO模型特性[^2]。 ```bash strings /usr/bin/rknn_server | grep -i "rknn_server version" strings /usr/lib/librknnrt.so | grep -i "librknnrt version" ``` 以上两条命令分别用于获取`rknn_server`服务程序与`librknnrt.so`共享对象文件内的版本字符串,帮助开发者了解当前安装的基础组件情况。 #### 边缘计算设备上的 YOLO 模型量化及部署流程概述 当考虑将YOLO应用于资源受限的边缘计算节点时,如搭载ARM64处理器的RK3588模块,则需特别关注模型优化方面的工作——即所谓的“量化”,它能够有效减少推理过程中所需内存空间的同时保持较高的精度水平[^3]。 此外,针对不同应用场景下的性能需求差异,可能还需要进一步调整网络结构参数或选用更适合该类任务特点的新一代YOLO系列成员(比如YOLOv5),并通过适当工具链完成从原始训练成果向最终运行形式之间的转换工作。 #### 使用 OpenVINO 工具包进行跨平台移植实践指南片段 考虑到某些情况下可能会涉及到多平台间的迁移操作,利用Intel推出的OpenVINO开发套件不失为一种高效解决方案之一;其允许用户先将在其他深度学习框架内定义好的模型导出成通用格式(如ONNX),再经由一系列预置接口转化为适合本地硬件加速器读取的形式(如IR Intermediate Representation)。这一路径同样适用于把原本基于Darknet框架创建出来的YOLO实例迁移到新的执行环境中去[^4]。 #### 构建 TNN 测试项目于 Linux 下的具体方法说明 最后值得一提的是,除了官方推荐的方式之外,还有第三方开源社区贡献了许多实用辅助工具可供选择。例如TNN提供了一种简化版的一键式自动化构建方案,只需简单几步就能快速搭建起一套完整的测试环境,并生成可以直接投入生产的二进制文件[^5]。 ```bash # 假设已下载源码至当前目录 cd path/to/tnn/source/ sh build_linux.sh ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值