首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >restbed静态库和示例

restbed静态库和示例
EN

Stack Overflow用户
提问于 2017-06-26 17:57:22
回答 1查看 897关注 0票数 1

嗨,我想把restbed编译成一个带有示例的静态库,但是我有一个链接器错误。

使用: ubuntu 16.04 gcc-5.4

我做了什么:

代码语言:javascript
复制
cd dependency/openssl
./config

*long text*

Configured for linux-x86_64.

*** Because of configuration changes, you MUST do the following before
*** building:

       make depend

所以我做了depend和make。它生成了libcrypt.a和libssl.a,所以我认为这部分是可以的??

下一步

代码语言:javascript
复制
cd build
cmake -DBUILD_TESTS=YES -DBUILD_EXAMPLES=YES -DBUILD_SSL=YES -DBUILD_SHARED=NO -DCMAKE_INSTALL_PREFIX=static ..
   Copyright 2013-2017, Corvusoft Ltd, All Rights Reserved.
-- Found ASIO include at: /home/jova/git/restbed/dependency/asio/asio/include
-- Found Kashmir include at: /home/jova/git/restbed/dependency/kashmir
-- Found OpenSSL library at: /home/jova/git/restbed/dependency/openssl/libssl.a
-- Found OpenSSL include at: /home/jova/git/restbed/dependency/openssl/include
-- Found Crypto library at: /home/jova/git/restbed/dependency/openssl/libcrypto.a
-- Failed to locate PAM, skipping example.
-- Found Syslog include at: /usr/include
-- Found Catch include at: /home/jova/git/restbed/dependency/catch/include
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jova/git/restbed/build-static
jova:~/git/restbed/build-static$ make -j4 install
[  0%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/uri.cpp.o
[  0%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/rule.cpp.o
[  0%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/string.cpp.o
[  1%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/http.cpp.o
[  1%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/request.cpp.o
[  2%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/service.cpp.o
[  2%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/session.cpp.o
[  2%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/resource.cpp.o
[  2%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/response.cpp.o
[  3%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/settings.cpp.o
[  3%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/web_socket.cpp.o
[  3%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/ssl_settings.cpp.o
[  4%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/session_manager.cpp.o
[  4%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/detail/http_impl.cpp.o
[  4%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/web_socket_message.cpp.o
[  5%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/detail/socket_impl.cpp.o
[  5%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/detail/service_impl.cpp.o
[  5%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/detail/session_impl.cpp.o
[  6%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/detail/web_socket_impl.cpp.o
[  6%] Building CXX object CMakeFiles/restbed.dir/source/corvusoft/restbed/detail/web_socket_manager_impl.cpp.o
[  6%] Linking CXX static library librestbed.a
[  6%] Built target restbed
[  6%] Building CXX object example/CMakeFiles/https_client_verify_peer.dir/https_client/source/verify_peer.cpp.o
[  6%] Building CXX object example/CMakeFiles/web_socket.dir/web_socket/source/example.cpp.o
[  7%] Building CXX object example/CMakeFiles/https_service.dir/https_service/source/example.cpp.o
[  7%] Building CXX object example/CMakeFiles/signal_handling.dir/signal_handling/source/example.cpp.o
[  7%] Linking CXX executable example/signal_handling
[  7%] Linking CXX executable example/https_client_verify_peer
[  7%] Linking CXX executable example/https_service
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
dso_dlfcn.c:(.text+0x11): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x24): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x2f): undefined reference to `dlclose'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
dso_dlfcn.c:(.text+0x334): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x3db): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
dso_dlfcn.c:(.text+0x454): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x4fb): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
dso_dlfcn.c:(.text+0x569): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x5cb): undefined reference to `dlclose'
dso_dlfcn.c:(.text+0x603): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_pathbyaddr':
dso_dlfcn.c:(.text+0x69f): undefined reference to `dladdr'
dso_dlfcn.c:(.text+0x709): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
dso_dlfcn.c:(.text+0x762): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
example/CMakeFiles/signal_handling.dir/build.make:97: recipe for target 'example/example/signal_handling' failed
make[2]: *** [example/example/signal_handling] Error 1
CMakeFiles/Makefile2:297: recipe for target 'example/CMakeFiles/signal_handling.dir/all' failed
make[1]: *** [example/CMakeFiles/signal_handling.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
dso_dlfcn.c:(.text+0x11): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x24): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x2f): undefined reference to `dlclose'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
dso_dlfcn.c:(.text+0x334): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x3db): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
dso_dlfcn.c:(.text+0x454): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x4fb): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
dso_dlfcn.c:(.text+0x569): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x5cb): undefined reference to `dlclose'
dso_dlfcn.c:(.text+0x603): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_pathbyaddr':
dso_dlfcn.c:(.text+0x69f): undefined reference to `dladdr'
dso_dlfcn.c:(.text+0x709): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
dso_dlfcn.c:(.text+0x762): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
example/CMakeFiles/https_client_verify_peer.dir/build.make:97: recipe for target 'example/example/https_client_verify_peer' failed
make[2]: *** [example/example/https_client_verify_peer] Error 1
CMakeFiles/Makefile2:223: recipe for target 'example/CMakeFiles/https_client_verify_peer.dir/all' failed
make[1]: *** [example/CMakeFiles/https_client_verify_peer.dir/all] Error 2
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
dso_dlfcn.c:(.text+0x11): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x24): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x2f): undefined reference to `dlclose'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
dso_dlfcn.c:(.text+0x334): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x3db): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
dso_dlfcn.c:(.text+0x454): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x4fb): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
dso_dlfcn.c:(.text+0x569): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x5cb): undefined reference to `dlclose'
dso_dlfcn.c:(.text+0x603): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_pathbyaddr':
dso_dlfcn.c:(.text+0x69f): undefined reference to `dladdr'
dso_dlfcn.c:(.text+0x709): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
dso_dlfcn.c:(.text+0x762): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
example/CMakeFiles/https_service.dir/build.make:97: recipe for target 'example/example/https_service' failed
make[2]: *** [example/example/https_service] Error 1
CMakeFiles/Makefile2:260: recipe for target 'example/CMakeFiles/https_service.dir/all' failed
make[1]: *** [example/CMakeFiles/https_service.dir/all] Error 2
[  8%] Linking CXX executable example/web_socket
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
dso_dlfcn.c:(.text+0x11): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x24): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x2f): undefined reference to `dlclose'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
dso_dlfcn.c:(.text+0x334): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x3db): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
dso_dlfcn.c:(.text+0x454): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x4fb): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
dso_dlfcn.c:(.text+0x569): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x5cb): undefined reference to `dlclose'
dso_dlfcn.c:(.text+0x603): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_pathbyaddr':
dso_dlfcn.c:(.text+0x69f): undefined reference to `dladdr'
dso_dlfcn.c:(.text+0x709): undefined reference to `dlerror'
../../dependency/openssl/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
dso_dlfcn.c:(.text+0x762): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
example/CMakeFiles/web_socket.dir/build.make:97: recipe for target 'example/example/web_socket' failed
make[2]: *** [example/example/web_socket] Error 1
CMakeFiles/Makefile2:186: recipe for target 'example/CMakeFiles/web_socket.dir/all' failed
make[1]: *** [example/CMakeFiles/web_socket.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

它会找到库,所以我不知道如何解决这个问题。

更新:我安装了ssl和加密库

代码语言:javascript
复制
sudo apt-get install libssl-dev
cmake -DBUILD_TESTS=YES -DBUILD_EXAMPLES=YES -DBUILD_SSL=YES -DCMAKE_INSTALL_PREFIX=static ..

现在它可以工作了,但是当我想编译一个支持https的示例时,我仍然需要将它与-lssl和-lcrypto链接起来,但这可能是因为ssl和crypto是共享库。

代码语言:javascript
复制
g++ -std=c++11 -I/home/jova/git/restbed/build/static/include https_service.cpp -L/home/jova/git/restbed/build/static/library -lrestbed -lssl -lcrypto -pthread

怎样才能在restbed.a静态库中获得ssl支持?或者,我必须始终使用ssl和加密进行链接?

我搞不懂这个选项-DBUILD_SSL=YES/NO能做什么?

EN

回答 1

Stack Overflow用户

发布于 2017-06-28 15:11:02

您的问题看起来是一个链接问题。尝试添加-ldl

dlopen and friends

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44757141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档