国密起步5:GmSSL3交叉编译arm64

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。


        之前已经建立好了交叉编译环境,并且已经完成本地编译GmSSL。这里仅仅是交叉编译GmSSL。

一、源码

        官网下载最近版,应该是3.X,上传到交叉编译环境(Ubuntu 18)。

二、启动交叉编译环境

        我的命令是这个:

source environment-setup-aarch64-unisoc-linux

三、cmake

        因为之前已经本地编译过GmSSL,所以cmake已经可用。无需cmake的交叉编译版本,直接cmake即可:

mkdir build
cd build
cmake ..

        输出如下:

user@vm-ubuntu:~/arm64/GmSSL/build$ cmake ..
-- The C compiler identification is GNU 7.2.1
-- Check for working C compiler: /opt/unisoc-initgc/udx710-module+unisoc-initgc-1.0+20201024+userdebug+native/sysroots/x86_64-unisocsdk-linux/usr/bin/aarch64-unisoc-linux/aarch64-unisoc-linux-gcc
-- Check for working C compiler: /opt/unisoc-initgc/udx710-module+unisoc-initgc-1.0+20201024+userdebug+native/sysroots/x86_64-unisocsdk-linux/usr/bin/aarch64-unisoc-linux/aarch64-unisoc-linux-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- ENABLE_ASM_UNDERSCORE_PREFIX is ON
-- ENABLE_SM4_ECB is ON
-- ENABLE_SM4_OFB is ON
-- ENABLE_SM4_CFB is ON
-- ENABLE_SM4_CCM is ON
-- ENABLE_SM4_XTS is ON
-- ENABLE_SM3_XMSS is ON
-- ENABLE_SHA1 is ON
-- ENABLE_SHA2 is ON
-- ENABLE_AES is ON
-- ENABLE_CHACHA20 is ON
-- ENABLE_SM4_CBC_MAC is ON
-- Looking for getentropy
-- Looking for getentropy - found
-- have getentropy
-- ENABLE_SDF is ON
-- Detected Linux, configuring /etc/ld.so.conf.d/gmssl.conf
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/arm64/GmSSL/build

        注意C编译器已经是交叉编译版本。

四、make

        执行make会顺利完成:

[ 98%] Building C object CMakeFiles/sm2_keytest.dir/tests/sm2_keytest.c.o
[ 98%] Linking C executable bin/sm2_keytest
[ 98%] Built target sm2_keytest
Scanning dependencies of target x509_crltest
[ 99%] Building C object CMakeFiles/x509_crltest.dir/tests/x509_crltest.c.o
[ 99%] Linking C executable bin/x509_crltest
[ 99%] Built target x509_crltest
Scanning dependencies of target tls13test
[ 99%] Building C object CMakeFiles/tls13test.dir/tests/tls13test.c.o
[100%] Linking C executable bin/tls13test
[100%] Built target tls13test

五、不要install,检查输出

        不需要执行install,需要的东西都在bin下面:

user@vm-ubuntu:~/arm64/GmSSL/build/bin$ ls -l
total 5752
-rwxrwxr-x 1 user user   36000 Aug 28 08:48 aestest
-rwxrwxr-x 1 user user   64376 Aug 28 08:48 asn1test
-rwxrwxr-x 1 user user   27488 Aug 28 08:48 base64test
-rwxrwxr-x 1 user user   20248 Aug 28 08:48 block_ciphertest
-rwxrwxr-x 1 user user   21592 Aug 28 08:48 chacha20test
-rwxrwxr-x 1 user user   68048 Aug 28 08:48 cmstest
-rwxrwxr-x 1 user user   22896 Aug 28 08:48 digesttest
-rwxrwxr-x 1 user user   32840 Aug 28 08:48 ectest
-rwxrwxr-x 1 user user   29304 Aug 28 08:48 gf128test
-rwxrwxr-x 1 user user   27576 Aug 28 08:48 ghashtest
-rwxrwxr-x 1 user user  884984 Aug 28 08:48 gmssl
-rwxrwxr-x 1 user user   20216 Aug 28 08:48 hextest
-rwxrwxr-x 1 user user   36112 Aug 28 08:48 hkdftest
-rwxrwxr-x 1 user user   29416 Aug 28 08:48 hmactest
lrwxrwxrwx 1 user user      13 Aug 28 08:48 libgmssl.so -> libgmssl.so.3
lrwxrwxrwx 1 user user      15 Aug 28 08:48 libgmssl.so.3 -> libgmssl.so.3.1
-rwxrwxr-x 1 user user 3242152 Aug 28 08:48 libgmssl.so.3.1
-rwxrwxr-x 1 user user   31704 Aug 28 08:48 pemtest
-rwxrwxr-x 1 user user   28304 Aug 28 08:48 pkcs8test
-rwxrwxr-x 1 user user   22656 Aug 28 08:48 sha1test
-rwxrwxr-x 1 user user   27096 Aug 28 08:48 sha224test
-rwxrwxr-x 1 user user   27096 Aug 28 08:48 sha256test
-rwxrwxr-x 1 user user   26880 Aug 28 08:48 sha384test
-rwxrwxr-x 1 user user   26904 Aug 28 08:48 sha512test
-rwxrwxr-x 1 user user   32752 Aug 28 08:48 sm2_enctest
-rwxrwxr-x 1 user user   31736 Aug 28 08:48 sm2_keytest
-rwxrwxr-x 1 user user   39144 Aug 28 08:48 sm2_signtest
-rwxrwxr-x 1 user user   59664 Aug 28 08:48 sm2_z256test
-rwxrwxr-x 1 user user   31496 Aug 28 08:48 sm3test
-rwxrwxr-x 1 user user   23640 Aug 28 08:48 sm4_cbc_mactest
-rwxrwxr-x 1 user user   38448 Aug 28 08:48 sm4_cbctest
-rwxrwxr-x 1 user user   30888 Aug 28 08:48 sm4_ccmtest
-rwxrwxr-x 1 user user   33312 Aug 28 08:48 sm4_cfbtest
-rwxrwxr-x 1 user user   40280 Aug 28 08:48 sm4_ctrtest
-rwxrwxr-x 1 user user   30408 Aug 28 08:48 sm4_ecbtest
-rwxrwxr-x 1 user user   35848 Aug 28 08:48 sm4_gcmtest
-rwxrwxr-x 1 user user   32192 Aug 28 08:48 sm4_ofbtest
-rwxrwxr-x 1 user user   36576 Aug 28 08:48 sm4_sm3_hmactest
-rwxrwxr-x 1 user user   28352 Aug 28 08:48 sm4test
-rwxrwxr-x 1 user user   29880 Aug 28 08:48 sm4_xtstest
-rwxrwxr-x 1 user user   88160 Aug 28 08:48 sm9test
-rwxrwxr-x 1 user user   28672 Aug 28 08:48 tls13test
-rwxrwxr-x 1 user user   44888 Aug 28 08:48 tlstest
-rwxrwxr-x 1 user user   31744 Aug 28 08:48 x509_algtest
-rwxrwxr-x 1 user user   48432 Aug 28 08:48 x509_crltest
-rwxrwxr-x 1 user user   70288 Aug 28 08:48 x509_exttest
-rwxrwxr-x 1 user user   41032 Aug 28 08:48 x509_oidtest
-rwxrwxr-x 1 user user   34640 Aug 28 08:48 x509_reqtest
-rwxrwxr-x 1 user user   28536 Aug 28 08:48 x509_strtest
-rwxrwxr-x 1 user user   48800 Aug 28 08:48 x509test
-rwxrwxr-x 1 user user   38520 Aug 28 08:48 zuctest

        可以试一下make test,不出意外,全部都是失败(因为格式不对根本无法运行)。

        执行file *看看文件格式:

user@vm-ubuntu:~/arm64/GmSSL/build/bin$ file *
aestest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=fc96f4a8d6a284c1687f7d1806819f357ac93ca6, with debug_info, not stripped
asn1test:         ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=4bedc805b44a1124a70aa5e13bb8b3b6c295b643, with debug_info, not stripped
base64test:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=5c45f3d32e8c4b52d521f6ee091af042fd457fdf, with debug_info, not stripped
block_ciphertest: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=7a4852bc99b528a82a3eeb12b19b34e88cd121d0, with debug_info, not stripped
chacha20test:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=2d2994ee9497c7b2ab3208c7329861946cded845, with debug_info, not stripped
cmstest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=75c77ade163dc0a4ec66b0e0b0771e66caa18eb0, with debug_info, not stripped
digesttest:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=46f9df696214b9cfd41e73027e7031d8aa56c224, with debug_info, not stripped
ectest:           ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=b223db93d1e6e8244e5ad05c8ab2b009a2c6a0eb, with debug_info, not stripped
gf128test:        ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=d059d62e624e2cc84dad1b47dccb1dcf5417683d, with debug_info, not stripped
ghashtest:        ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=fe079002472a4d4b2cb263708c77fe04620aa5a9, with debug_info, not stripped
gmssl:            ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=8ca8ef42860cb011088f39c3cfada2c957b785da, with debug_info, not stripped
hextest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=571cbe3dd7353c7837c30dd90300d5b2d67f418a, with debug_info, not stripped
hkdftest:         ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=618fdf94e341921df437059a1babdd9f58d32c23, with debug_info, not stripped
hmactest:         ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=f16abfbab4fd99db3b5dacf514fd85d1b44086d4, with debug_info, not stripped
libgmssl.so:      symbolic link to libgmssl.so.3
libgmssl.so.3:    symbolic link to libgmssl.so.3.1
libgmssl.so.3.1:  ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=60e001e423da7002ea1de01c8df5c87315eae5f6, with debug_info, not stripped
pemtest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=60e510012b03adc49449e7f5466fc545aa995b2c, with debug_info, not stripped
pkcs8test:        ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=ca6fcbfeb223678dec67ce06de7906fd52aca286, with debug_info, not stripped
sha1test:         ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=cef1160c01b54f196fc311016921af4bef62a545, with debug_info, not stripped
sha224test:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=5a369baac9ac5193ec8b0cc8843eca113d44d3c0, with debug_info, not stripped
sha256test:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=f1136d4989677f6717bab82e502d1f47b94be0df, with debug_info, not stripped
sha384test:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=e7ef0af8438708f94b87c592170e312c3d241e35, with debug_info, not stripped
sha512test:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=f68116f0fab592ddb8615830189f71709a20267b, with debug_info, not stripped
sm2_enctest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=47204681d48a02b37943defbeec70202e3355fb2, with debug_info, not stripped
sm2_keytest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=edf2fca1056da0ac2c1a0907063c5d4542d33cf4, with debug_info, not stripped
sm2_signtest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=478900180a755cee6266fa621428e479e09038c4, with debug_info, not stripped
sm2_z256test:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=bb39b7143452049f919aad51b3a75cc748cc63f8, with debug_info, not stripped
sm3test:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=82868688521ed73e7dfb3a2635271a3293faa146, with debug_info, not stripped
sm4_cbc_mactest:  ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=b982deddbb02419e91ccee658ac1a712ae9f3735, with debug_info, not stripped
sm4_cbctest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=1d207d6517326dfe70c0780a1590c721f9c25e40, with debug_info, not stripped
sm4_ccmtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=9e62f7933a0e0bc38029dffd32192120855a410a, with debug_info, not stripped
sm4_cfbtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=422b0f6479e9db053797da998039acd82b4dcbba, with debug_info, not stripped
sm4_ctrtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=47258c78e5b6d006ad9f99b915a5ce3630320cdc, with debug_info, not stripped
sm4_ecbtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=e0e1a64470cc5ec71d8be6d32301bbf17634bc2f, with debug_info, not stripped
sm4_gcmtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=c9bfb792e62aa8efe8909c446accaeb145ac679f, with debug_info, not stripped
sm4_ofbtest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=4f082949d2222467fe6bf51e2d493362d9030ee8, with debug_info, not stripped
sm4_sm3_hmactest: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=ba6498dcf32bf4f504be757459fe07f841c955d5, with debug_info, not stripped
sm4test:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=d5f74db24752de276fe16c1d1508e07db2bb0144, with debug_info, not stripped
sm4_xtstest:      ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=6ec5091b09997748c12586dcacfc511b5b9e5b06, with debug_info, not stripped
sm9test:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=3a00608a2ebca841fe605e465c57eee37acb957c, with debug_info, not stripped
tls13test:        ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=9badbc59adb81fa4973bf34b5021c19c0970bd08, with debug_info, not stripped
tlstest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=1967e4d7733c9f48256d068d87227acc1983021d, with debug_info, not stripped
x509_algtest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=9964dc2e89bce1e0d021a31b0fee4f1452a62241, with debug_info, not stripped
x509_crltest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=b135facea3168265a56a151582aaadb1044e4b90, with debug_info, not stripped
x509_exttest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=aeae1b9c7970f8a8245f0839a43d9b15162dba08, with debug_info, not stripped
x509_oidtest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=fe75932592d8bed6bba9c02d76e6448f56d9b430, with debug_info, not stripped
x509_reqtest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=1506319bcb9b66f41d452afe984fbc59385df110, with debug_info, not stripped
x509_strtest:     ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=5b6c8fb5c3f3b377a43cba2be6c8d56d0685bc4b, with debug_info, not stripped
x509test:         ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=cf78223b886a1be0680161613f29e7deecdd95a0, with debug_info, not stripped
zuctest:          ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=c8647088245ddfcccfb15ab3b4a1319a04aad076, with debug_info, not stripped

        全部都是ARM aarch64,说明交叉编译正确。

六、设备测试

        输出文件虽然多,但是其实我们只需要gmssl和so文件,我先用ftp下载到本地,三个so变成了相同的文件(两个链接被替换为了链接目标):

        上传到设备测试,发现其实只要有libgmssl.so.3一个就可以了:

root# ./gmssl
./gmssl: error while loading shared libraries: libgmssl.so.3: cannot open shared object file: No such file or directory
root# ./gmssl
Usage: ./gmssl command [options]
command -helpCommands:help              Print this help messageversion           Print versionrand              Generate random bytessm2keygen         Generate SM2 keypairsm2sign           Generate SM2 signaturesm2verify         Verify SM2 signature
。。。。。。

(这里是文档结束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频集中存储智能边缘计算网关软硬一体机智能边缘计算网关应用场景

在信息化飞速发展的今天,数据处理的速度和效率直接影响到各行各业的运作和发展。传统的云计算模式虽然强大,但在面对实时性和带宽要求越来越高的应用场景时,往往显得力不从心。此时,智能边缘计算网关的出现,为我们带来…

FreeRTOS线程同步---信号量

目录 二值信号量 二值信号量相关API函数 一般使用方法为 1.创建二值信号量 2.在一个任务中置为二值释放信号 3.在另一个任务中获取信号 信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。其中,“同步”指的 是任务间的同步&#xff…

Spring Boot报错:没有配置数据源(url属性未设置)

文章目录 小结问题解决参考 小结 Spring Boot报错:没有配置数据源(url属性未设置),进行解决。 问题 Spring Boot报错: ERROR 2024-08-28 17:24:43.734 [main] - *************************** APPLICATION FAILED T…

24年7月-8月工作笔记整理(前端)

目录 一、问题解决二、基础知识学习 一、问题解决 1.浏览器拦截跳转的解决方案 //先打开一个空白页let winHandler window.open(, _blank)//再重定向到想要跳转的链接winHandler.location.href redirectUrl2.文字大小跟随父级元素宽度适配缩放 //父元素加不换行和相对定位…

sqli-labs靶场(56-60)

56关 ?id-1)union select 1,2,database()-- 看数据库 ?id-1) union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- 看表 ?id-1) union select 1,group_concat(column_name),3 from information_schema.columns wh…

深入探索MySQL数据库结构设计:实战案例解析,打造高效、可扩展的数据存储方案

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客 前言:…

noge-gyp构建项目踩坑记录

开发环境 系统: win11 node: 19.7.0 npm: 8.3.2 node-gyp: 10.0.2可以不使用windows-build-tools来安装构建工具,手动进行安装 我这边用windows-build-tools安装时候会提示 process.env only accepts a configurable, writable, and enumerable data descriptor. 查了资料后…

转换视频格式轻松搞定!3个小窍门助你轻松将mxf格式转mp4

你是否因为格式转换而烦恼?你是否经历过这样的情况:你想要在别的设备或平台上播放心仪的视频,但是你的视频文件是xmf格式的,很多设备都不支持这个格式,导致视频无法播放。现在,你需要把mxf格式转mp4格式。你…

【时间盒子】-【2.准备】HarmonyOS 开发前需要准备什么?

零基础新手或转行进入鸿蒙生态应用的开发者,请提前准备以下内容: 一、注册华为帐号 此帐号在华为官方各平台通用,比如:华为手机、华为商城、华为云、华为开发者联盟等等。 https://id1.cloud.huawei.com/CAS/portal/userRegist…

linux 下转化 ppk 文件 为openssh 文件(private,public)

1. 首先安装: puttygen ubuntu : apt install putty-tools 2. ppk 文件转化 openssh key private key : puttygen /path/to/puttykey.ppk -O private-openssh -o ~/.ssh/id_rsa public key: puttygen /path/to/puttykey.ppk -O public-openssh -o…

如何在Windows和Mac上免费提取RAR文件?这里有方法

序言 你有没有下载过一个文件,却发现它有一个奇怪的.rar文件扩展名?RAR是一种压缩文件格式,与ZIP文件非常相似,在本文中,我们将向你展示如何在Windows或macOS上打开RAR文件。 如何在Windows 11上打开RAR文件 Windows 11在2023年增加了对RAR文件的原生支持。从那时起,你…

问:说说内部类和静态内部类的区别?

示例 内部类(Non-static Inner Class): public class OuterClass {private String outerField "我是外部类字段";class InnerClass {public void display() {System.out.println(outerField); // 可以直接访问外部类的成员}}public void sh…

144. 腾讯云Redis数据库

文章目录 一、Redis 的主要功能特性二、Redis 的典型应用场景三、Redis 的演进过程四、Redis 的架构设计五、Redis 的数据类型及操作命令六、腾讯云数据库 Redis七、总结 Redis 是一种由 C 语言开发的 NoSQL 数据库,以其高性能的键值对存储和多种应用场景而闻名。本…

可重入VI,VI模板和动态VI之间的差异 转

可重入VI 当您想要同时运行同一VI的多个实例时,将使用可重入VI。当VI不可重入时,VI只有一个数据空间。因此,一次只能有一个调用者运行VI,因此调用者可能必须“等待轮到它”时才能使用VI。这是VI的默认选项,但您可以将V…

ARKTS数组和Map的常规操作

数组 Entry Component struct ArrayDemo {State message: string Hello World;// 创建一个数组State testList: Array<string> [测试1, 测试2, 测试3];build() {Row() {Column() {Button(新增元素).onClick(() > {// this.testList.push(测试4)//在数组末尾添加一个…

js基础速成-字符串方法

字符串方法 JavaScript 中的所有内容都是对象。字符串是一种基本数据类型&#xff0c;这意味着一旦创建就无法修改。字符串对象有许多字符串方法&#xff0c;有不同的字符串方法可以帮助我们处理字符串。 length 字符串的 length 方法返回字符串中字符的数量&#xff0c;包括…

Hibernate 批量插入速度慢的原因和解决方法

由于业务需要一次性连续写入超过10k条以上的新数据&#xff0c;当对象超过10个成员变量以后&#xff0c;整个写入过程居然需要长达35秒&#xff0c;这个速度是不能接受的&#xff0c;故此研究了一下怎么开启Hibernate批量写入的功能。 我这边使用的是Hibernate 5.6.15 在网上…

Spark MLlib模型训练—回归算法 Linear regression

Spark MLlib模型训练—回归算法 Linear regression 线性回归是回归分析中最基础且应用广泛的一种方法。它用于建模目标变量和一个或多个自变量之间的关系。随着大数据时代的到来,使用像 Spark 这样的分布式计算框架进行大规模数据处理和建模变得尤为重要。本文将全面解析 Spa…

Java 异常架构Exception(异常)

1. Exception 类的概述 在Java中&#xff0c;Exception类是Throwable类的直接子类之一。Throwable类是Java异常处理体系的根类&#xff0c;所有异常和错误都继承自它。Java的异常体系可以分为以下几个部分&#xff1a; Throwable&#xff1a;所有异常和错误的基类。 - Exce…

【Java|Stream流】不可变集合

文章目录 1.什么是不可变集合2.创建不可变集合的方式2.1 List类型2.2 Set2.3 Map 1.什么是不可变集合 不可变集合:不可以被修改的集合 不可变集合优点: 安全性 由于不可变集合不能被修改&#xff0c;所以可以安全地在多个线程之间共享&#xff0c;而不用担心被意外修改&#xf…