繁体   English   中英

帮助建立提升asio ssl的例子

[英]Aid in building boost asio ssl example

我一直在研究asio ssl示例(下面链接)。 尽管付出了最大的努力,但我还是无法将openssl链接到boost示例中。 ld的输出是ld缺少libssl.a中的符号。 我无法弄清楚的是,我发现libssl.a中的所有符号都带有ld所说的缺失的nm。 我怀疑我正在做一些愚蠢的事情,但我不熟悉c ++来修复它。 我还包括了我的makefile。 ssl-client.cpp的来源是逐字链接的。

http://www.boost.org/doc/libs/1_41_0/doc/html/boost_asio/example/ssl/client.cpp

INCLUDES = -I /usr/local/boost_1_41_0/ -I /opt/local/include/
LIBS = -L/usr/local/boost_1_41_0/lib/libboost_system.a \
-L/opt/local/lib/libcrypto.a \
-L/opt/local/lib/libssl.a

CPP = g++

build: ssl-client

ssl-client: ssl-client.cpp
    $(CPP) $(LIBS) $(INCLUDES) ssl-client.cpp

我认为你误解了-L选项是如何工作的。 -L指定搜索库的路径。 要指定要链接到的单个库,请使用-l选项并省略“lib”前缀,如下所示:

LIBS = -L/usr/local/boost_1_41_0/lib -L/opt/local/lib \
    -lboost_system -lcrypto -lssl

此外, -I include path选项和实际路径之间通常没有空格。 我不确定那里的空间是否会导致问题,但您可能会尝试这样做是为了安全起见:

INCLUDES = -I/usr/local/boost_1_41_0/ -I/opt/local/include/

此外,如我的评论中所述,您定义了LIBS变量,但随后使用了LIB变量。 对g ++的调用应该如下:

$(CPP) $(LIBS) $(INCLUDES) ssl-client.cpp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM