我一直在研究 asio ssl 示例(链接如下)。尽管尽了最大努力,我还是无法将 openssl 链接到 boost 示例中。 ld 的输出是 ld 缺少 libssl.a 中的符号。我无法弄清楚的是,我发现 libssl.a 中带有 nm 的所有符号都丢失了。我怀疑我在做一些愚蠢的事情,但我对 C++ 不够熟悉来修复它。我还包括了我的 makefile。 ssl-client.cpp 的来源是链接中的逐字来源。
http://www.boost.org/doc/libs/1_41_0/doc/html/boost_asio/example/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
包括路径选项和实际路径。我不确定那里的空格是否会导致问题,但为了安全起见,您可以尝试这样做:
INCLUDES = -I/usr/local/boost_1_41_0/ -I/opt/local/include/
另外,正如我的评论中所指出的,您定义了LIBS
变量,但随后使用了LIB
多变的。对 g++ 的调用应如下所示:
$(CPP) $(LIBS) $(INCLUDES) ssl-client.cpp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)