facebook的 atosl 是一个 可在linux 环境下运行的部分替代macOS上 atos 的工具,但facebook从2013年开始就不再维护这个项目了,官方介绍的编译方式现在也有一定的问题,一番摸索后终于编译通过,现将过程记录一下
Linux下编译
atosl 依赖 libdwarf 库,这个库原本是可以用apt-get直接安装的,但这个库一直在不断迭代,atosl 当时使用的 libdwarf 版本和最新的版本已经有很大的出入,有些方法已经被移除,导致 atosl 无法编译通过
wget https://github.com/facebookarchive/atosl/archive/refs/tags/1.1.tar.gz
tar zxvf 1.1.tar.gz
cd atosl-1.1
make
cc -Wall -Werror -O2 -DATOSL_VERSION=\"1.1\" -MM atosl.c > atosl.dep
cc -Wall -Werror -O2 -DATOSL_VERSION=\"1.1\" -o atosl.o -c atosl.c
cc -o atosl atosl.o -ldwarf -liberty
/usr/bin/ld: atosl.o: in function `parse_function_starts':
atosl.c:(.text+0xe37): undefined reference to `_dwarf_decode_u_leb128'
/usr/bin/ld: atosl.c:(.text+0xe8b): undefined reference to `_dwarf_decode_u_leb128'
collect2: error: ld returned

本文记录了如何在Linux和macOS环境下编译atosl工具,由于atosl依赖的libdwarf库版本问题导致编译失败,解决方案是安装指定版本的libdwarf库。在Linux上,需要卸载最新版并安装20130729版本的libdwarf;在macOS上,同样安装旧版libdwarf,并处理libelf和libiberty的依赖问题。最终成功编译并展示了atosl的使用帮助。
最低0.47元/天 解锁文章
1538

被折叠的 条评论
为什么被折叠?



