Comments (6)
我在Linux下测试了以下过程是可以的:
$cd hird_party/mbedtls-2.7.12/library;
$export SHARED=1; make
$cp *.so ~/acl/lib_acl_cpp/samples/ssl/
$cd ~/acl/lib_acl_cpp/samples/ssl/ssl_server/
$vi ssl_server.cpp # 把其中中的宏定义 "#define USE_ONE" 注释掉,以便使用三个独立的 so 库
$make
$./t.sh
然后会显示:
mbedtls_conf.cpp(405), mbedtls_dll_load: ../libmbedcrypto.so loaded!
mbedtls_conf.cpp(407), mbedtls_dll_load: ../libmbedx509.so loaded!
mbedtls_conf.cpp(410), mbedtls_dll_load: ../libmbedtls.so loaded!
listen: 0.0.0.0:2443 ...
event_limit: fdsize(1024) too small, extend it
event_limit: max fdsize: 10240
acl_inet_listen: listen 0.0.0.0:2443 ok
ssl_server.cpp(374), proc_on_init: load cert ok, crt: ../ssl_crt.pem
ssl_server.cpp(383), proc_on_init: set key ok, key: ../ssl_key.pem
from acl.
deng@ubuntu:/work/opensource/acl-master/lib_acl_cpp/samples/ssl/ssl_server$ ll ../work/opensource/acl-master/lib_acl_cpp/samples/ssl/ssl_server$ ./t.sh
总用量 768
drwxrwxr-x 15 deng deng 4096 7月 21 09:09 ./
drwxrwxr-x 89 deng deng 4096 7月 14 09:12 ../
drwxrwxr-x 2 deng deng 4096 7月 20 09:15 aio_client/
drwxrwxr-x 2 deng deng 4096 7月 19 09:18 aio_server/
drwxrwxr-x 2 deng deng 4096 7月 14 09:12 client/
drwxrwxr-x 2 deng deng 4096 7月 18 17:40 https_client/
drwxrwxr-x 2 deng deng 4096 7月 18 17:40 https_proxy/
drwxrwxr-x 2 deng deng 4096 7月 14 09:12 https_request/
drwxrwxr-x 2 deng deng 4096 7月 14 09:12 https_request_static/
drwxrwxr-x 2 deng deng 4096 7月 18 17:40 https_server/
-rwxrwxr-x 1 deng deng 402160 7月 21 09:09 libmbedcrypto.so*
-rwxrwxr-x 1 deng deng 190776 7月 21 09:09 libmbedtls.so*
-rwxrwxr-x 1 deng deng 97608 7月 21 09:09 libmbedx509.so*
-rw-rw-r-- 1 deng deng 448 7月 14 09:12 Makefile
-rw-rw-r-- 1 deng deng 155 7月 14 09:12 README.md
drwxrwxr-x 2 deng deng 4096 7月 20 14:54 server/
drwxrwxr-x 2 deng deng 4096 7月 21 09:11 ssl_client/
drwxrwxr-x 2 deng deng 4096 7月 18 17:40 ssl_client2/
-rw-rw-r-- 1 deng deng 1054 7月 20 14:53 ssl_crt.pem
-rw-rw-r-- 1 deng deng 1704 7月 20 14:53 ssl_key.pem
drwxrwxr-x 2 deng deng 4096 7月 21 09:16 ssl_server/
drwxrwxr-x 2 deng deng 4096 7月 18 17:40 ssl_server2/
-rw------- 1 deng deng 1675 7月 20 14:43 sslserver.key
-rw-rw-r-- 1 deng deng 4561 7月 20 14:43 sslserver.pem
deng@ubuntu:
acl_dlopen(36): open(../libmbedx509.so) error(Success)
mbedtls_conf.cpp(357), load_all_dlls: load ../libmbedx509.so error ../libmbedx509.so: undefined symbol: mbedtls_threading_gmtime_mutex
mbedtls_conf.cpp(505), load: load mbedtls error
load ../libmbedtls.so error
deng@ubuntu:/work/opensource/acl-master/lib_acl_cpp/samples/ssl/ssl_server$ nm ../libmbed/work/opensource/acl-master/lib_acl_cpp/samples/ssl/ssl_server$ nm ../libmbedcrypto.so |grep mbedtls_threading_gmtime_mutex
libmbedcrypto.so libmbedtls.so libmbedx509.so
deng@ubuntu:
0000000000255ba0 D mbedtls_threading_gmtime_mutex
deng@ubuntu:~/work/opensource/acl-master/lib_acl_cpp/samples/ssl/ssl_server$ nm ../libmbedx509.so |grep mbedtls_threading_gmtime_mutex
U mbedtls_threading_gmtime_mutex
mbedtls生成的库有问题
from acl.
mbedtls是按你说的方法,在third_part/mbedtls27/library/下重新生成的。
from acl.
from acl.
看来在Ubuntu下编译的mbedtls的三个 so 不能很好地动态加载,不过我找到一个变通的方式,通过以下方式就可以解决了:
$mkdir mbedtls-2.7.12/build
$cd mbedtls-2.7.12/build
$cmake ..; make -j 4
$cd ../lib
$cp libmbedtls_all.so libmbedcrypto.so
$cp libmbedtls_all.so libmbedx509.so
$cp libmbedtls_all.so libmbedtls.so
然后把上面的三个 so(libmbedcrypto.so, libmbedx509.so, libmbedtls.so)拷贝到 SSL 程序的运行目录下,就可以正常加载了。
这个 CMakeLists.txt 是我之前写的,把mbedtls里所有的源文件编译成一个统一的库(libmbedtls_all.so)。
from acl.
多谢大神的及时答复,终于可以加载成功了。
from acl.
Related Issues (20)
- acl_socket_read 卡住 HOT 2
- windows下用Cmake编译acl HOT 3
- vs2022搞出来的静态库为啥用不明白? HOT 2
- Unable to compile on windows using MSYS2 or MINGW and throws Linux header file error HOT 19
- Any plan to support MongoDB? HOT 1
- smember崩溃 HOT 4
- make出错 HOT 6
- redis pipeline 偶尔崩溃的问题,疑似用 mbox wait 不保证强同步 HOT 5
- incrbyfloat 函数错误使用sizeof判断char* HOT 4
- 增加CI/CD工作流
- keys_pattern function inside redis_key.cpp is not working correclty HOT 3
- 3.6.0升级到3.6.0-2版本 测试工程链接失败 HOT 3
- gson是否支持std::array HOT 1
- 能不能讲一下怎么使用websocket+ssl? HOT 2
- dns解析支持毫秒级超时设置吗 HOT 3
- vs2015 windows使用acl redis库时报错
- 项目中使用acl-redis client 报错 HOT 1
- 求解释一些设计理念
- 各平台的编译支持 HOT 11
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from acl.