C:静态链接使用openssl AES-256加密的二进制文件的麻烦

时间:2017-02-07 12:58:47

标签: c gcc

我试图生成一个可以在通用linux机器上运行的静态二进制文件(相同的机器架构,相同的bitnes,相同的endienness和兼容的内核系统调用接口)。当我将-static传递给gcc时,我收到以下警告:

# gcc -static testme.c -lssl -lcrypto -ldl -lltdl -static-libgcc
/usr/lib/gcc/i486-slackware-linux/4.8.2/../../../libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
dso_dlfcn.c:(.text+0x21): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
#

虽然二进制文件运行了一些我尝试过的系统,但我认为警告意味着我的静态二进制文件无法在具有不同glibc版本的系统上运行。

我将-ldl和-lltdl包含在要链接的其他库中,以试图消除警告,但仍然得到相同的结果。我究竟做错了什么 ?我怎样才能摆脱警告?

实际代码可以在github上的obash testing branch上看到。 一旦你产生了obash,它就应该被用来产生一个可重用的静态二进制文件,用它来调用它" -r"标志。

由于它可以将dlopen纳入等式,是否有另一种方法可以进行可接受的安全对称加密,即使在静态链接时也不会使用dlopen并且可以安全使用?

0 个答案:

没有答案