ar(Archiver)是 Linux 下创建静态库的标准工具。而 gcc-ar 是它的一个包装器(Wrapper) 。笔者想要知道gcc-ar调用ar的细节,比如参数信息。
1)使用strace
bash
strace -s 1024 -f -e execve gcc-ar
2)创建一个"伪造"的 ar
可以在不中断流程的情况下,记录所有gcc-ar的动作,可以玩个"调包计"
第一步,编写一个脚本 my-ar.sh
bash
#!/bin/bash
echo "gcc-ar called ar with: $@" >> /tmp/ar_commands.log
# 这个地方需要写程序的绝对路径,如果直接使用ar,有可能陷入死循环,因为这里ar就是这个脚本程序
/devtoolset-8-binutils-2.30-55/bin/ar "$@"
第二步,给执行权限,chmod +x my-ar.sh
第三步,诱骗 gcc-ar : 由于 gcc-ar 往往去 PATH 里找 ar,你可以临时修改环境变量:
bash
export PATH=$(pwd):$PATH
ln -s my-ar.sh ar
第四步,查看结果,cat /tmp/ar_commands.log