首页 > 解决方案 > 如何静态编译 ps(procps)

问题描述

出于取证的原因,我想在 Centos 上编译一些基本工具,如 cat、grep、vi、find、md5sum、dir..etc。当我们做取证时检查进程列表非常重要。所以我尝试编译 ps(procps)静态的。我确实失败了。这是我尝试的步骤:

git clone https://gitlab.com/procps-ng/procps.git
cd procps
./autogen.sh
./configure LDFLAGS="-static"

make SHARED=0 CC='gcc -static'

还用谷歌搜索了很多帖子并尝试过:

./configure LDFLAGS="-all-static"
./configure --enable-static --disable-shared
make SHARED=0 CC='gcc -static'  
make -e LDFLAGS=-all-static
export LDFLAGS="-static -Wl,--no-export-dynamic"
make -e LDFLAGS=-all-static
make sense CC="gcc -static"

并将这些配置与 make 结合起来,这些都不起作用,有些编译失败,有些编译成功,但是当我用 ldd pscommands 检查它时,它显示

[root@localhost ps]# ldd pscommand
        linux-vdso.so.1 =>  (0x00007ffca9bc2000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f3b078cd000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f3b07500000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3b07ad1000)

procps 是否对这些非静态库有一些深度依赖?

标签: clinuxmakefilecompilationstatic

解决方案


您可能需要安装 glibc-static。


推荐阅读