git clone https://github.com/ARMmbed/mbedtls.git
# 更新软件源
sudo apt-get update
# 安装cmake
sudo apt-get install cmake
rice@rice:~/mbedtls_study/mbedtls$ cmake -DUSE_SHARED_MBEDTLS_LIBRARY=On .
rice@rice:~/mbedtls_study/mbedtls$ make
rice@rice:~/mbedtls_study/mbedtls$ sudo make install
# 删除之前cmake相关中间文件,但是不包括CMakeLists.txt文件
find . -iname '*cmake*' -not -name CMakeLists.txt -exec rm -rf {} +
# 指定配置文件为 config-ccm-psk-tls1_2.h,重新编译
CFLAGS="-I$PWD/configs -DMBEDTLS_CONFIG_FILE='<config-ccm-psk-tls1_2.h>'" cmake .
#include <string.h>
#include <stdio.h>
#include "mbedtls/sha1.h"
#define mbedtls_printf printf
int main(void)
{
int ret;
unsigned char buffer[] = "RiceChen";
unsigned char digest[32] = {0};
mbedtls_sha1_context sha1_ctx;
memset(digest, 0x00, sizeof(digest));
mbedtls_sha1_init(&sha1_ctx);
mbedtls_sha1_starts(&sha1_ctx);
mbedtls_sha1_update(&sha1_ctx, buffer, sizeof(buffer) - 1);
mbedtls_sha1_finish(&sha1_ctx, digest);
int i = 0;
mbedtls_printf("SHA1: [");
while(digest[i])
{
mbedtls_printf("%02X", digest[i]);
i++;
}
mbedtls_printf("]\n");
exit:
mbedtls_sha1_free(&sha1_ctx);
return ret;
}
cmake_minimum_required(VERSION 2.6)
project("mbedtls-test")
set(libs
mbedtls
mbedcrypto
mbedx509
)
set(targets
mbedtls-test
)
add_executable(mbedtls-test mbedtls-test.c)
target_link_libraries(mbedtls-test ${libs})
rice@rice:~/mbedtls_study/demo$ mkdir build
rice@rice:~/mbedtls_study/demo$ cd build
rice@rice:~/mbedtls_study/demo/build$ cmake ../
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/rice/mbedtls_study/demo/build
rice@rice:~/mbedtls_study/demo/build$ make
Scanning dependencies of target mbedtls-test
[ 50%] Building C object CMakeFiles/mbedtls-test.dir/mbedtls-test.c.o
[100%] Linking C executable mbedtls-test
[100%] Built target mbedtls-test
rice@rice:~/mbedtls_study/demo/build$ ./mbedtls-test
SHA1: [CBD12068E2F91DF5DB148742DF108131AF76287E]
rice@rice:~/mbedtls_study/demo/build$ ./mbedtls-test
./mbedtls-test: error while loading shared libraries: libmbedcrypto.so.0: cannot open shared object file: No such file or directory
rice@rice:~/mbedtls_study/demo/build$ sudo vim /etc/ld.so.conf //在新的一行中加入库文件所在目录
/usr/local/lib
rice@rice:~/mbedtls_study/demo/build$ sudo ldconfig //更新/etc/ld.so.cache文件
本文分享自 Rice 嵌入式开发技术分享 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!