# 如何在现有SDK内增加openssl库

**URL:** <https://forum.amebaiot.com/t/sdk-openssl/584>\
**Category:** SDK\
**Tags:** rtl872xd\
**Created:** [June 2, 2021, 10:33am UTC](https://forum.amebaiot.com/t/sdk-openssl/584 "2021-06-02T10:33:53Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![zlbb112](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/zlbb112/32/354_2.png) [@zlbb112](https://forum.amebaiot.com/u/zlbb112)\
**Post date:** [June 2, 2021, 10:33am UTC](https://forum.amebaiot.com/t/sdk-openssl/584/1 "2021-06-02T10:33:53Z")

</div>

大家好，  
最近在添加使用RTL8720DN做一些应用，准备尝试集成“ aws-iot-device-sdk-embedded-C”到SDK中，但在使用的过程中发现缺少openssl库，我不知道该如何在对应的makefile文件中增加针对openssl库文件的依赖，使用SDK版本为sdk-amebad\_v6.2C-RC，编译环境ubuntu18.04.4  
我已经尝试修改“project/realtek\_amebaD\_va0\_example/GCC-RELEASE/project\_hp/asdk/”路径下的Makefile文件，增加和Makefile.include.gen文件，但是都未解决我的问题

 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/03790faccf3bfd3628606398a762def80561db7e.png)  
这是Makefile内增加的内容  
 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/04eda48aebe53578ce6e9f84b166063d8da9389d.png)  
这是Makefile.include.gen内增加的内容

 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/f33abd432f84beb93a2cedd28fae2db20ffacc62.png)  
这是编译的结果

希望能得到帮助，谢谢 😃

---

<div class="post-metadata">

**Author:** ![xidameng](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/xidameng/32/18_2.png) [@xidameng](https://forum.amebaiot.com/u/xidameng)\
**Post date:** [June 2, 2021, 12:05pm UTC](https://forum.amebaiot.com/t/sdk-openssl/584/2 "2021-06-02T12:05:20Z")

</div>

你好，RTL8720DN的SDK裏面應該原生支援MbedTLS的，你用的是什麽版本的SDK？

---

<div class="post-metadata">

**Author:** ![zlbb112](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/zlbb112/32/354_2.png) [@zlbb112](https://forum.amebaiot.com/u/zlbb112)\
**Post date:** [June 2, 2021, 12:11pm UTC](https://forum.amebaiot.com/t/sdk-openssl/584/3 "2021-06-02T12:11:04Z")

</div>

你好，我有尝试使用原生的MbedTLS,但是在使用时包含mbedtls/ssl.h的头文件时，还是会报错

 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/aae80d36a5fdd91a88240e70a765abbd223319a1.png)

使用SDK版本为sdk-amebad\_v6.2C-RC

---

<div class="post-metadata">

**Author:** ![xidameng](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/xidameng/32/18_2.png) [@xidameng](https://forum.amebaiot.com/u/xidameng)\
**Post date:** [June 2, 2021, 12:14pm UTC](https://forum.amebaiot.com/t/sdk-openssl/584/4 "2021-06-02T12:14:08Z")

</div>

看報錯信息，是缺少header頭文件，你或許需要看一下application note和user manual，找一下開啓mbedTLS的macro（宏），一般是在platform\_opt.h裏面，或是別的opt頭文件中能找到這個macro

---

<div class="post-metadata">

**Author:** ![zlbb112](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/zlbb112/32/354_2.png) [@zlbb112](https://forum.amebaiot.com/u/zlbb112)\
**Post date:** [June 2, 2021, 12:18pm UTC](https://forum.amebaiot.com/t/sdk-openssl/584/5 "2021-06-02T12:18:52Z")

</div>

或许你说的是这一个宏的定义，但实际上我已经开启了，在menuconfig的配置中，选中的了ssl

 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/151c894fb299789be1ca188a10cf54777b8120e5.jpeg)  
 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/0664f4709a57bd4f67a559d76d019e77da29bbcd.png)  
我会继续查找为什么会报错的原因，谢谢

---

<div class="post-metadata">

**Author:** ![xidameng](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/xidameng/32/18_2.png) [@xidameng](https://forum.amebaiot.com/u/xidameng)\
**Post date:** [June 2, 2021, 12:52pm UTC](https://forum.amebaiot.com/t/sdk-openssl/584/6 "2021-06-02T12:52:58Z")

</div>

只看到了archive lib和header file加入到makefile裏面，感覺還是缺少了源文件，或者include的路徑沒有全都加進去

---

<div class="post-metadata">

**Author:** ![zlbb112](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/zlbb112/32/354_2.png) [@zlbb112](https://forum.amebaiot.com/u/zlbb112)\
**Post date:** [June 2, 2021, 1:16pm UTC](https://forum.amebaiot.com/t/sdk-openssl/584/7 "2021-06-02T13:16:01Z")

</div>

我尝试编译SDK内部的mbedTLS，感觉很奇怪，makefile内的头文件目录看上去并没有问题，源文件也正常编译转成了.o文件，但是还是会报错缺少定义

 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/bab55b835bf7f10004280339cd6dde3047e28cac.png)

---

<div class="post-metadata">

**Author:** ![Alphi\_Jiang](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/alphi_jiang/32/379_2.png) [@Alphi\_Jiang](https://forum.amebaiot.com/u/Alphi_Jiang)\
**Post date:** [June 4, 2021, 8:41am UTC](https://forum.amebaiot.com/t/sdk-openssl/584/8 "2021-06-04T08:41:59Z")

</div>

第一個mbedtls 路徑好像不太對請你在確認  
應該是  
**IFLAGS +=-I$(BASEDIR)/component\common\network\ssl\mbedtls-2.4.0\include\mbedtls**

最後少了一個mbedtls

---

<div class="post-metadata">

**Author:** ![zlbb112](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/zlbb112/32/354_2.png) [@zlbb112](https://forum.amebaiot.com/u/zlbb112)\
**Post date:** [June 4, 2021, 11:40am UTC](https://forum.amebaiot.com/t/sdk-openssl/584/9 "2021-06-04T11:40:42Z")

</div>

这个路径是正常的，我移除掉新增库后编译能通过了

---

<div class="post-metadata">

**Author:** ![zlbb112](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/zlbb112/32/354_2.png) [@zlbb112](https://forum.amebaiot.com/u/zlbb112)\
**Post date:** [June 4, 2021, 11:46am UTC](https://forum.amebaiot.com/t/sdk-openssl/584/10 "2021-06-04T11:46:59Z")

</div>

但是我尝试使用SDK内部集成的mbedtls库时，发现启用熵源的宏被注释掉了

 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/76430597186fb3cf5dd6ff1e64909e41286c5665.png)  
但是我需要使用到它，取消注释后编译变正常了，但是发现这个功能使用起来并不正常，运行后报如下错误

```auto
ERROR: iot_tls_connect L#142 failed
  ! mbedtls_ctr_drbg_seed returned -0x34

```

另外，SDK内部集成的cJSON有点太老了，很多函数功能模块都没有，直接替换最新的cJSON库编译正常通过并使用 😬

---

<div class="post-metadata">

**Author:** ![zlbb112](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/zlbb112/32/354_2.png) [@zlbb112](https://forum.amebaiot.com/u/zlbb112)\
**Post date:** [June 4, 2021, 1:12pm UTC](https://forum.amebaiot.com/t/sdk-openssl/584/11 "2021-06-04T13:12:09Z")

</div>

现在我发现另外一个问题，当我尝试启动mbedtls的另一个宏时，此宏是用来开启文件系统的宏，但是编译时，提示我并不支持“dirent.h”的头文件，定位到定义出，发现这个头文件是不允许被添加的，但实际上我是在ubuntu18.04下编译的，它应该被支持才对 ☹

 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/a64cf528f96ec27da0424f20df22159881a6a86f.png)  
 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/ca55045b0c539b02bb273a761200c26b5b741f4e.png)

---

<div class="post-metadata">

**Author:** ![zlbb112](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/zlbb112/32/354_2.png) [@zlbb112](https://forum.amebaiot.com/u/zlbb112)\
**Post date:** [June 4, 2021, 1:57pm UTC](https://forum.amebaiot.com/t/sdk-openssl/584/12 "2021-06-04T13:57:38Z")

</div>

我尝试取消宏MBEDTLS\_ENTROPY\_HARDWARE\_ALT的注释，并实现自己的随机数生成函数，已成功执行到下一步，接下来会继续尝试走通下面的流程 😀

---

<div class="post-metadata">

**Author:** ![zlbb112](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/zlbb112/32/354_2.png) [@zlbb112](https://forum.amebaiot.com/u/zlbb112)\
**Post date:** [June 5, 2021, 10:52am UTC](https://forum.amebaiot.com/t/sdk-openssl/584/13 "2021-06-05T10:52:52Z")

</div>

中间费了不少功夫，通过不懈努力终于使用现有SDK移植“ aws-iot-device-sdk-embedded-C”库连上AWS IOT的后台啦 😀  
下面是使用AWS MQTT测试客户端测试订阅对应主题，并得到了发布的消息

 ![image](https://us1.discourse-cdn.com/flex016/uploads/ameba/original/1X/51ab9399cdcdc600cef155a134c095fc3f7c1898.png)

---

<div class="post-metadata">

**Author:** ![xidameng](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/xidameng/32/18_2.png) [@xidameng](https://forum.amebaiot.com/u/xidameng)\
**Post date:** [June 7, 2021, 10:46am UTC](https://forum.amebaiot.com/t/sdk-openssl/584/14 "2021-06-07T10:46:53Z")

</div>

厉害啦 👍  
谢谢分享！
