为了账号安全,请及时绑定邮箱和手机立即绑定

将OpenSSL库链接到程序

/ 猿问

将OpenSSL库链接到程序

吃鸡游戏 2019-10-21 13:10:50

我已经从源代码构建了OpenSSL(一个有意的旧版本;使用来构建./config && make && make test),并且更愿意使用我所构建的内容,而不用make install链接到我的程序。


失败的命令是:


gcc -Wall -Wextra -Werror -static -Lopenssl/openssl-0.9.8k/ -lssl -lcrypto 

-Iopenssl/openssl-0.9.8k/include -o myApp source1.o source2.o common.o`

并且我收到一系列类似于以下的错误:


common.c:(.text+0x1ea): undefined reference to `SSL_write'

这使我认为我的OpenSSL有点时髦。如果我-Lopenssl/openssl-0.9.8k/从命令中省略,则错误变为无法执行以下操作:


/usr/bin/ld: cannot find -lssl

/usr/bin/ld: cannot find -lcrypto

我是否编译不正确的OpenSSL?还是我应该如何最好地解决这个问题?


查看完整描述

3 回答

?
暮色呼如

愚蠢的“ Linux-isms”再次罢工!很显然,我需要改变我的命令,使得在-L与-l东西是在年底一样(尽管什么man gcc似乎表明):


gcc -Wall -Wextra -Werror -static -o myApp source1.o source2.o common.o -Lopenssl/openssl-0.9.8k/ -lssl -lcrypto -Iopenssl/openssl-0.9.8k/include


查看完整回答
反对 回复 2019-10-21
?
慕雪6442864

您为什么不想使用make install?如果先前将其传递到,它可以将生成的二进制文件复制到所需的目录中./configure --prefix $HOME/target_library_install_directory


如果在构建和安装的每个库中都使用了此技巧,则可以将目标目录添加到LIBRARY_PATH环境变量中,并避免使用-L选项。


查看完整回答
反对 回复 2019-10-21
?
慕盖茨1488219

如果您使用Autotools,或者正在构建类似Autools的项目cURL,那么您应该可以使用pkg-config。这个想法是Autotools软件包将读取OpenSSL的软件包配置,并且一切将为您“工作”。


OpenSSL软件包配置库的名称为openssl。


您将在基于makefile的项目中使用它。


%.o: %.c

        $(CC) -o $@ -c `pkg-config --cflags openssl` $^


target: foo.o bar.o baz.o

        $(CC) -o $@ `pkg-config --libs openssl` $^


查看完整回答
反对 回复 2019-10-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信