Linux-编译包含所需库的静态二进制文件

时间:2019-02-19 10:29:09

标签: linux makefile compilation package shared-libraries

对此我有点陌生,所以如果我有错误的概念,请告诉我。

我正在尝试打包JohnTheRipper的更新版本。我需要在Docker上运行该程序,直到现在我的所有尝试都失败了。简单地将文件复制过来是行不通的,因为它会寻找一些链接的库。只有在我先将文件复制完然后将所需的.so文件复制到var/usr/lib文件夹中的目标之后,该功能才能起作用。

我想让这个过程不那么尴尬。因此,我认为最好的方法是编辑JohnTheRipper Makefile以编译包含所需库等的john二进制文件,因此除了可执行文件本身之外,它不需要任何东西。我环顾四周,尝试在-static中简单地添加Makefile标志,但这会导致编译失败。所以我想这不是那么简单。我在此处添加了JohnTheRipper Makefile中与我相关的部分(文件太大,无法在此处复制)。最好的编译方法是什么,以便我可以简单地将二进制文件复制到任何Linux系统,而不会丢失.so引用等?

谢谢!

Makefile(这是我添加-static标志的位置...):

../run/john: $(JOHN_OBJS) aes/aes.a secp256k1/secp256k1.a ed25519-donna/ed25519-donna.a 
    $(LD) $(JOHN_OBJS) $(LDFLAGS) -lssl -lcrypto  -fopenmp -lgmp  -lrexgen  -lOpenCL  -lm -pthread  -lm -lz -ldl -lcrypt  -lbz2  aes/aes.a secp256k1/secp256k1.a ed25519-donna/ed25519-donna.a -o $@

0 个答案:

没有答案