编译tolua——2、基础编译tolua

news2024/11/25 14:33:45

目录
1、编译工具和环境说明
2、基础编译tolua

大家好,我是阿赵。
继续来讲tolua的各个常用平台的编译。
这里使用官方的tolua_runtime-master项目来做编译
具体需要的编译软件和源码地址,在上一篇文章已经介绍过了,先把环境准备好,然后就开始编译了。

一、编译Windows用的dll

首先拿比较容易编译成功的Windows平台的dll来做一个练手。

1、编译32位的dll

在这里插入图片描述

执行mingw32_shell.bat
出现命令行提示之后

1.先跳转到项目所在路径

我的路径是放在G盘的tolua文件夹,所以我用cd命令这样跳转:

admin@DESKTOP-DL702DH MINGW32 ~
$ cd /g/

admin@DESKTOP-DL702DH MINGW32 /g
$ cd tolua

admin@DESKTOP-DL702DH MINGW32 /g/tolua

2.可以用dir命令去展示出当前文件夹所有文件

$ dir
android         build_ubuntu.sh  iOS             luasocket  struct.c
bit.c           build_win32.sh   LICENSE         macjit     tolua.c
build_arm.sh    build_win64.sh   link_arm64.bat  macnojit   tolua.h
build_arm64.sh  build_x86.sh     lpeg.c          pb.c       ubuntu
build_ios.sh    cjson            lpeg.h          Plugins    uint64.c
build_osx.sh    int64.c          luajit-2.1      README.md  window

3.调用build_win32.sh来编译

admin@DESKTOP-DL702DH MINGW32 /g/tolua
$ ./build_win32.sh

这时候会看到一大堆的输出

E:/Software/msys64/mingw64/bin/mingw32-make -C src clean
mingw32-make[1]: Entering directory ‘G:/tolua/luajit-2.1/src’ rm -f
luajit.exe libluajit.a lua51.dll host/minilua.exe host/buildvm.exe
lj_vm.S lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h
host/buildvm_arch.h jit/vmdef.lua .o host/.o *.obj *.lib *.exp *.dll
*.exe *.manifest *.pdb *.ilk mingw32-make[1]: Leaving directory ‘G:/tolua/luajit-2.1/src’
==== Building LuaJIT 2.1.0-beta3 ==== E:/Software/msys64/mingw64/bin/mingw32-make -C src mingw32-make[1]:
Entering directory ‘G:/tolua/luajit-2.1/src’ HOSTCC host/minilua.o
HOSTLINK host/minilua.exe DYNASM host/buildvm_arch.h HOSTCC
host/buildvm.o HOSTCC host/buildvm_asm.o HOSTCC
host/buildvm_peobj.o HOSTCC host/buildvm_lib.o HOSTCC
host/buildvm_fold.o HOSTLINK host/buildvm.exe BUILDVM lj_vm.o CC
lj_gc.o BUILDVM lj_ffdef.h CC lj_err.o CC lj_char.o
BUILDVM lj_bcdef.h CC lj_bc.o CC lj_obj.o CC
lj_buf.o CC lj_str.o CC lj_tab.o CC lj_func.o CC
lj_udata.o CC lj_meta.o CC lj_debug.o CC
lj_state.o CC lj_dispatch.o CC lj_vmevent.o CC
lj_vmmath.o CC lj_strscan.o CC lj_strfmt.o CC
lj_strfmt_num.o CC lj_api.o CC lj_profile.o CC
lj_lex.o CC lj_parse.o CC lj_bcread.o CC
lj_bcwrite.o CC lj_load.o CC lj_ir.o CC
lj_opt_mem.o BUILDVM lj_folddef.h CC lj_opt_fold.o CC
lj_opt_narrow.o CC lj_opt_dce.o CC lj_opt_loop.o CC
lj_opt_split.o CC lj_opt_sink.o CC lj_mcode.o CC
lj_snap.o CC lj_record.o CC lj_crecord.o BUILDVM
lj_recdef.h CC lj_ffrecord.o CC lj_asm.o CC
lj_trace.o CC lj_gdbjit.o CC lj_ctype.o CC
lj_cdata.o CC lj_cconv.o CC lj_ccall.o CC
lj_ccallback.o CC lj_carith.o CC lj_clib.o CC
lj_cparse.o CC lj_lib.o CC lj_alloc.o lj_alloc.c:176:14:
warning: ‘DIRECT_MMAP’ defined but not used [-Wunused-function]
static void *DIRECT_MMAP(size_t size)
^ CC lib_aux.o BUILDVM lj_libdef.h CC lib_base.o CC lib_math.o CC lib_bit.o CC
lib_string.o CC lib_table.o CC lib_io.o CC
lib_os.o CC lib_package.o CC lib_debug.o CC
lib_jit.o CC lib_ffi.o CC lib_init.o AR
libluajit.a CC luajit.o BUILDVM jit/vmdef.lua LINK
luajit.exe OK Successfully built LuaJIT mingw32-make[1]:
Leaving directory ‘G:/tolua/luajit-2.1/src’
==== Successfully built LuaJIT 2.1.0-beta3 ==== E:/Software/msys64/mingw64/bin/mingw32-make -C src clean
mingw32-make[1]: Entering directory ‘G:/tolua/luajit-2.1/src’ rm -f
luajit.exe libluajit.a lua51.dll host/minilua.exe host/buildvm.exe
lj_vm.S lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h
host/buildvm_arch.h jit/vmdef.lua .o host/.o *.obj *.lib *.exp *.dll
*.exe *.manifest *.pdb *.ilk mingw32-make[1]: Leaving directory ‘G:/tolua/luajit-2.1/src’

这些输出其实都是批处理在执行每个步骤里面的打印输出。如果没有发现什么错误提示,最后应该就是编译成功了,

4.编译成功

可以在Plugins\x86文件夹里面找到编译完成的dll文件。

在这里插入图片描述

2、编译64位的dll

在这里插入图片描述

注意,因为是编译64位,所以执行mingw64_shell.bat
在出来命令行之后,步骤和上面的32位一样,跳转到tolua所在目录,这次要执行build_win64.sh。
具体的过程和32位差不多,所以不再贴出过程了
编译成功后,在Plugins/x86_64文件夹找到生成的dll文件
在这里插入图片描述

这里稍微看看build_64.sh是做了什么的,把文件用文本编辑器打开

#!/bin/bash
# 64 Bit Version
mkdir -p window/x86_64

cd luajit-2.1
mingw32-make clean

mingw32-make BUILDMODE=static CC="gcc -m64 -O2" XCFLAGS=-DLUAJIT_ENABLE_GC64
cp src/libluajit.a ../window/x86_64/libluajit.a
mingw32-make clean

cd ..

gcc -m64 -O2 -std=gnu99 -shared \
 tolua.c \
 int64.c \
 uint64.c \
 pb.c \
 lpeg.c \
 struct.c \
 cjson/strbuf.c \
 cjson/lua_cjson.c \
 cjson/fpconv.c \
 luasocket/auxiliar.c \
 luasocket/buffer.c \
 luasocket/except.c \
 luasocket/inet.c \
 luasocket/io.c \
 luasocket/luasocket.c \
 luasocket/mime.c \
 luasocket/options.c \
 luasocket/select.c \
 luasocket/tcp.c \
 luasocket/timeout.c \
 luasocket/udp.c \
 luasocket/wsocket.c \
 -o Plugins/x86_64/tolua.dll \
 -I./ \
 -Iluajit-2.1/src \
 -Iluasocket \
 -lws2_32 \
 -Wl,--whole-archive window/x86_64/libluajit.a -Wl,--no-whole-archive -static-libgcc -static-libstdc++

从这个批处理脚本可以看到,实际上它做了以下这些事情:

1.创建window/x86_64文件夹

mkdir -p window/x86_64

2.进入luajit-2.1文件夹,并且用make来编译出来libluajit.a

cd luajit-2.1
mingw32-make clean

mingw32-make BUILDMODE=static CC="gcc -m64 -O2" XCFLAGS=-DLUAJIT_ENABLE_GC64
cp src/libluajit.a ../window/x86_64/libluajit.a
mingw32-make clean

3.返回到上一层文件夹、

cd ..

4.用gcc编译,指定需要编译的内容和需要自动查找的文件夹

gcc -m64 -O2 -std=gnu99 -shared \
 tolua.c \
 int64.c \
 uint64.c \
 pb.c \
 lpeg.c \
 struct.c \
 cjson/strbuf.c \
 cjson/lua_cjson.c \
 cjson/fpconv.c \
 luasocket/auxiliar.c \
 luasocket/buffer.c \
 luasocket/except.c \
 luasocket/inet.c \
 luasocket/io.c \
 luasocket/luasocket.c \
 luasocket/mime.c \
 luasocket/options.c \
 luasocket/select.c \
 luasocket/tcp.c \
 luasocket/timeout.c \
 luasocket/udp.c \
 luasocket/wsocket.c \
 -o Plugins/x86_64/tolua.dll \
 -I./ \
 -Iluajit-2.1/src \
 -Iluasocket \
 -lws2_32 \
 -Wl,--whole-archive window/x86_64/libluajit.a -Wl,--no-whole-archive -static-libgcc -static-libstdc++

一般来说,编译Windows的dll是最简单的,中途也不会出什么错误,所以可以先用这个来试试。

二、编译安卓用的so

1、编译32位的so

执行mingw32_shell.bat,并跳转到tolua所在目录
这次要执行build_arm.sh
执行了之后,发现了提示一堆报错,主要的都是这样的:

D:/android-ndk-r10e/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/bin/aarch64-linux-android-gcc:命令未找到
在这里插入图片描述

这是因为,在build_arm.sh里面,需要先指定NDK的目录,而默认是D:/android-ndk-r10e,我的电脑本地没有这个NDK目录,所以肯定是找不到的。

接下来需要下载NDK了。这个下载可以自己百度。不过建议先看完我下面说的,再去下载,不然可能会浪费很多时间。
举个例子,我下载了比较新的NDK版本r25c,然后把地址填入到build_arm.sh,然后再执行编译,这次出现了新的报错:

G:/android-ndk-r25c/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64/bin/aarch64-linux-android-gcc:命令未找到

这是因为,Android后面的版本彻底的移除了gcc编译,默认改为了使用clang编译的缘故,在ndk18之后就没有gcc了
解决这个问题估计只能有2种方案:
1、使用旧版本包含gcc的ndk
2、学习用clang编译
简单的处理就是使用旧版本ndk了,不过需要注意的是,就算是旧版ndk,他包含的gcc方法也会因为版本而不一样,比如我下周了r16去编译,会报错:

g:\ndk\android-ndk-r16b-windows-x86_64\android-ndk-r16b\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\lib\gcc\aarch64-linux-android\4.9.x\include-fixed\limits.h:34,
from luaconf.h:12,
from lua.h:16,
from lj_obj.h:12,
from lj_gc.c:12:

所以,如果是要拿就版本的ndk去编译,最好还是用ndk-r10e这个版本

下载了ndk-r10e,指定了路径,编译,这次通过了。在Plugins\Android\libs\armeabi-v7a里面可以看到了tolua.so文件
在这里插入图片描述

2、编译64位的so

执行mingw64_shell.bat,跳转到tolua的目录,把NDK的路径填入build_arm64.sh,然后执行build_arm64.sh
发现执行完成,android/jni/libluajit.a已经重新生成了,但并没有在Plugins\Android\libs\arm64-v8a目录发现有新生成的tolua.so文件
打开build_arm64.sh看看

cd luajit-2.1/src

# Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.0+ (ICS)
NDK=G:/ndk/android-ndk-r13b-windows-x86_64/android-ndk-r13b
NDKABI=21
NDKTRIPLE=aarch64-linux-android
NDKVER=$NDK/toolchains/aarch64-linux-android-4.9
NDKP=$NDKVER/prebuilt/windows-x86_64/bin/aarch64-linux-android-
NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm64" 
NDKARCH="-DLJ_ABI_SOFTFP=0 -DLJ_ARCH_HASFPU=1 -DLUAJIT_ENABLE_GC64=1"

make clean
make HOST_CC="gcc -m64" CROSS=$NDKP TARGET_SYS=Linux TARGET_FLAGS="$NDKF $NDKARCH"
cp ./libluajit.a ../../android/jni/libluajit.a
make clean

if [[ "$OSTYPE" == "msys" ]]; then
	cd ../../
	# can't pass $NDK to bat
	cmd /c "link_arm64.bat"
else
	cd ../../android
	$NDK/ndk-build clean APP_ABI="armeabi-v7a,x86,arm64-v8a" APP_PLATFORM=android-21
	$NDK/ndk-build APP_ABI="arm64-v8a" APP_PLATFORM=android-21
	cp libs/arm64-v8a/libtolua.so ../Plugins/Android/libs/arm64-v8a
	$NDK/ndk-build clean APP_ABI="armeabi-v7a,x86,arm64-v8a" APP_PLATFORM=android-21
fi

可以看到

if [[ "$OSTYPE" == "msys" ]]; then
	cd ../../
	# can't pass $NDK to bat
cmd /c "link_arm64.bat"

我们是用msys执行的,所以他实际上在是调用了link_arm64.bat这个批处理。
打开link_arm64.bat看看

@echo off
set ndkPath=D:/android-ndk-r15c
cd ./android
call %ndkPath%/ndk-build clean APP_ABI="armeabi-v7a,x86,arm64-v8a" APP_PLATFORM=android-21
call %ndkPath%/ndk-build APP_ABI="arm64-v8a" APP_PLATFORM=android-21
copy libs\arm64-v8a\libtolua.so ..\Plugins\Android\libs\arm64-v8a
call %ndkPath%/ndk-build clean APP_ABI="armeabi-v7a,x86,arm64-v8a" APP_PLATFORM=android-21
echo Successfully linked
exit

发现这里也有需要指定NDK的路径,所以也指定一下自己的NDK路径。
再次编译,发现成功了,在Plugins\Android\libs\arm64-v8a目录发现有新生成的tolua.so文件。

再回头来看一下build_arm64.sh的内容,他里面做的事情有:
1.指定编译参数

# Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.0+ (ICS)
NDK=D:/android-ndk-r15c
NDKABI=21
NDKTRIPLE=aarch64-linux-android
NDKVER=$NDK/toolchains/aarch64-linux-android-4.9
NDKP=$NDKVER/prebuilt/windows-x86_64/bin/aarch64-linux-android-
NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm64" 
NDKARCH="-DLJ_ABI_SOFTFP=0 -DLJ_ARCH_HASFPU=1 -DLUAJIT_ENABLE_GC64=1"

2.编译libluajit.a

make clean
make HOST_CC="gcc -m64" CROSS=$NDKP TARGET_SYS=Linux TARGET_FLAGS="$NDKF $NDKARCH"
cp ./libluajit.a ../../android/jni/libluajit.a
make clean

3.实际编译

if [[ "$OSTYPE" == "msys" ]]; then
	cd ../../
	# can't pass $NDK to bat
	cmd /c "link_arm64.bat"
else
	cd ../../android
	$NDK/ndk-build clean APP_ABI="armeabi-v7a,x86,arm64-v8a" APP_PLATFORM=android-21
	$NDK/ndk-build APP_ABI="arm64-v8a" APP_PLATFORM=android-21
	cp libs/arm64-v8a/libtolua.so ../Plugins/Android/libs/arm64-v8a
	$NDK/ndk-build clean APP_ABI="armeabi-v7a,x86,arm64-v8a" APP_PLATFORM=android-21
fi

最后的实际编译,其实就是调用NDK的ndk-build方法把so文件编译出来

三、编译OSX用的bundle

编译osx和ios都不能在Windows编译,因为是需要命令行调用xcode编译的。
所以在mac准备好xcode,然后把tolua项目拷贝到mac上,尝试编译
在mac下面不需要安装任何的软件,直接打开命令行终端,然后输入命令就行了
可以通过cd命令跳转文件夹,通过ls命令列出文件夹里面的内容,然后调用./build_osx.sh
直接编译,发现了2个错误

1、提示i386不支持

在这里插入图片描述

打开macnojit文件夹下的tolua.xcodeproj工程,在Build Settings里面搜索ARCHS然后修改一下红框里面的内容,把i386删除掉

2、发现cjson报错

去下载最新版的cjson
下载地址
然后拷贝到tolua项目内的cjson文件夹内。

然后再次编译,就看到了Plugins文件夹下的tolua.bundle

四、编译iOS用的a文件

和编译OSX一样,用命令行终端跳转到tolua项目路径,然后执行build_ios.sh
发现2个问题

1.提示IPHONEOS_DEPLOYMENT_TARGET错误

warning: The iOS deployment target ‘IPHONEOS_DEPLOYMENT_TARGET’ is set
to
8.0, but the range of supported deployment target versions is 9.0 to
14.1.99. (in target ‘FMDB’ from project ‘Pods’)

根据提示打开tolua项目的iOS文件夹下的tolua.xcodeproj项目
在这里插入图片描述

然后在Build Settings里面找到deployment的iOS Deployment Target选项,选择一个提示里面支持的版本9.0 to 14.1.99就行了,比如就选择9.0

2.提示Armv7错误

Build Settings 中搜索 “Excluded Architectures”, 复制以下内容添加即可:

EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64=arm64 arm64e armv7 armv7s armv6 armv8EXCLUDED_ARCHS=$(inherited)$(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT))

warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to
    8.0, but the range of supported deployment target versions is 9.0 to

在这里插入图片描述

再次执行编译,在Plugins\iOS文件夹下就看到libtolua.a

因为OSX和iOS的编译都是基于xcode的,所以其实出现报错,都需要取对应的xcode项目里面去修改。

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

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

相关文章

飞桨AI4S污染物扩散快速预测模型,亮相全国数据驱动计算力学研讨会

5月19-21日,第一届全国数据驱动计算力学研讨会在大连召开。本次研讨会由中国力学学会主办,大连理工大学运载工程与力学学部承办,北京理工大学先进结构技术研究院协办。 会议共吸引了400多位来自全国各地高校与企业的老师与学生参会&#xff0…

DNSPod十问林洪祥:顶级带货主播,其实是数字人?

本期嘉宾 林洪祥 风平智能CEO 林洪祥,风平智能CEO。风平智能拥有全球领先的数字人AIGC预训练大模型技术,利用数字人AI知识大模型打造视频版ChatGPT,实现数字人名师、数字人医生、数字人保险客服、数字广告模特、数字人AI直播等,…

百度大模型算法实习岗上岸经验!

Datawhale干货 作者:J同学,学校:天津大学 写在前面 大家好,我是天大J同学,2023找暑期实习期间也算是历经坎坷,最后去了百度做大模型相关工作,虽然本硕均为计算机科班但本身实力尚浅&#xff0c…

全景浏览技术在虚拟现实中的应用

随着虚拟现实技术的发展,全景浏览技术越来越受到人们的关注。全景浏览技术是一种可以将场景全方位呈现给用户的虚拟现实技术,可以为用户带来身临其境的视觉和听觉体验。本文将介绍全景浏览技术在虚拟现实中的应用以及如何利用代码实现这些应用。 一、全…

报名 | 2023中国高校计算机大赛—大数据挑战赛火热开启!

2016年,教育部高等学校计算机类专业教学指导委员会、教育部高等学校软件工程专业教学指导委员会、教育部高等学校大学计算机课程教学指导委员会、全国高等学校计算机教育研究会联合创办了“中国高校计算机大赛”(China Collegiate Computing Contest&…

2023最新SpringCloud Alibaba全彩版笔记开源,阿里大牛带你手撸微服务结构项目实战

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,依托Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将Spring Cloud 应用接入阿里微服务解决方案,通过阿里中…

迅捷pdf实现多页插入

之前我们使用福昕阅读器实现了在每一页插入logo 这里我们用迅捷pdf再来一次,别问,问就是公司买了会员 首先声明,这里已经有会员了,所以不知道别人操作是不是需要会员,担心的话可以看看上一篇福昕阅读器版本 打开编辑…

3 年换了 6 份工作,失业了!

见字如面,我是军哥! 我 4 月份的时候写过一篇文章《三年换 3 份工作,再也找不到工作了!》如下图,有读者留言,三年换了六家公司,我是惊呆了! 但凡看过我之前文章的,也不至…

chatgpt赋能python:Python如何保存文件到桌面

Python如何保存文件到桌面 在编程中,常常需要将程序生成的文件保存到指定的位置。当然,最常见的目标就是桌面。本文将介绍如何在Python中将文件保存到桌面,以及可能出现的错误及解决方法。 保存文件到桌面 首先,我们需要导入Py…

Grafana Node Graph 使用教程

Grafana 可以显示图数据,例: 依赖 Grafana > 7.5.0 下载地址 https://grafana.com/grafana/download # 启动 Grafana $ ./grafana-severGrafana Node Graph API Plugin # 安装插件 $ grafana-cli plugins install hamedkarbasi93-nodegraphapi-d…

mybatis-plus用法(二)

(5条消息) mybatis-plus用法(一)_渣娃工程师的博客-CSDN博客 AR模式 ActiveRecord模式,通过操作实体对象,直接操作数据库表。与ORM有点类似。 示例如下 让实体类User继承自Model package com.example.mp.po; import com.bao…

爱奇艺大数据加速:从Hive到Spark SQL

01 导语 爱奇艺自2012年开展大数据业务以来,基于大数据开源生态服务建设了一系列平台,涵盖了数据采集、数据处理、数据分析、数据应用等整个大数据流程,为公司的运营决策和各种数据智能业务提供了强有力的支持。随着数据规模的不断增长和计算…

Java程序员春招面试宝典,结合了30多家大厂面试难点的Java面试

先进的技术-般都诞生于顶尖的公司(一般互联网人称这样的公司为“大厂”),如Dubbo由阿里巴巴开源, CAT由美团开源,等等。那么除了培训/沙龙这种烧钱的方式外,去“大厂”面试也是一种既省时又省钱的汲取先进技术的方式。因此笔者就养成了每隔一段时间就去大…

国产数据库突围:道阻且长,行则将至

“西风烈,长空雁叫霜晨月。霜晨月,马蹄声碎,喇叭声咽。雄关漫道真如铁,而今迈步从头越。从头越,苍山如海,残阳如血。” 这首《忆秦娥娄山关》,写于红军取得娄山关战斗胜利之后。娄山关战斗是红军…

小程序底层架构剖析

当我们前端切图崽网上冲浪的时候,会发现有很多技术文章都在分析vue框架,react框架,显少有分析小程序框架的。那今天就通过这篇短小精悍的文章带大家了解一下微信小程序的底层架构。(如无特殊说明,下文中提到的小程序都…

STM32F4_通过RS232实现和PC端通讯

目录 1. RS232通讯 2. 实验程序 2.1 main.c 2.2 RS232.c 2.3 RS232.h 通过上一节的学习,已经基本了解了RS232的通讯过程,实际上,不管是RS485还是RS232都是基于串口的一种通讯方式! STM32F4_RS485、RS232_light_2025的博客-CS…

[opencv]opencv-python环境搭建

删除源信息 conda config --remove-key channels 添加源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ conda config --add chan…

ChatGPT 会带来失业潮吗?

(永久免费,扫码加入) 最近在翻知乎上的一些文章,很多都是跟ChatGPT有关的。因为本身是搞Python编程的,知乎推荐系统给我推荐了一篇廖雪峰老师的文章,觉得很有意思。 一共1119个赞,还是很厉害的&…

HTTPS 协议

哥几个来学 HTTPS 协议 啦 ~~ 目录 🌲一、HTTPS 是什么? 🌳二、何为 “加密” 🌴三、HTTPS 的工作过程 🍦1. 引入对称加密 🍧2. 引入非对称加密 🍨3.引入证书 🌲一、HTTPS 是什…

【前端 - HTML】第 4 课 - 列表标签

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、列表 3、无序列表 4、有序列表 5、定义列表 6、总结 1、缘起 微信小程序的列表标签是一种用于展示多个数据项的…