源码编译dotnetcore的runtime
为了dotnetcore运行时的安可目标,特意在国庆假期研究了怎么编译dotnetcore的runtime。由于我们用的是.net6,最新的是8,所以从github下载的.net6的分支代码进行的编译。查遍了国内外资料,估计微软服务太体贴了,竟然没什么编译runtime的资料参照,而开始我也没翻源码doc的文档就自己猜着试了。整体试了4-5天总算自己给完全编译ok了,分享给需要安可的小伙伴,麻烦的应该就是runtime的编译了,因为涉及到cli的c++代码和环境依赖,后面再编译asp.netcore代码。虽然整个过程很痛苦,一直看编译报错和翻他的编译脚本及解决依赖问题和各种尝试。但是收获很多,C#编程环境更可控了,对Linux下c编译更加熟悉了。
成功编译的runtime
首先到开源的dotnet官网下载自己要编译的分支代码到本地
然后把下载的代码上传到linux的根下解压
代码大体层级,这个我是编译成功才翻文档的,早知道文档很明确就不用走这么多弯路了
Linux下的编译文档
Linux下用docker编译的镜像地址,不过国内网不好
dotnetcore编译的docker镜像地址,能够下载镜像的话应该镜像会容易些,不用解决复杂的依赖问题
| OS | Target Arch | Image location | crossrootfs location | Clang Version |
| --------------------------- | --------------- | ---------------------------------------------------------------------------------------------------- | -------------------- | ------------- |
| Ubuntu 16.04 | x64 | `mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-a50a721-20191120200116` | - | -clang9 |
| Alpine | x64 | `mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.9-WithNode-20200602002639-0fc54a3` | - | -clang5.0 |
| CentOS 7 (build for RHEL 7) | x64 | `mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-359e48e-20200313130914` | - | -clang9 |
| Ubuntu 16.04 | arm32 (armhf) | `mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-20200413125008-09ec757` | `/crossrootfs/arm` | -clang9 |
| Ubuntu 16.04 | arm64 (arm64v8) | `mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-20201022204150-b2c2436` | `/crossrootfs/arm64` | -clang9 |
| Alpine | arm64 (arm64v8) | `mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine-20200413125008-406629a` | `/crossrootfs/arm64` | -clang9 |
Linux下编译环境具体介绍,参照这个文档应该更准确
以下是我自己在CentOS7的编译经历,最终执行的编译命令是./build.sh --gcc指定用gcc编译了。
首先第一次运行build.sh时候他会下载一个版本的dotnetsdk来支持编译.net得基础库,这个下载很慢,而且没告诉下载到什么地方,
翻他的脚步发现他是把包下载到/root/下dotnet的隐藏文件了,可以把隐藏文件备份处理后面放进去就行了,避免每次下载.net环境慢。也能改他sh脚本的下载地址。
这里cmake版本要对,gcc要比较新,我试的好使的是gcc9,CentOS7默认gcc是4.8,需要升级。cmake也没有要求的版本,需要源码安装。
升级gcc
sudo yum install centos-release-scl
sudo yum install devtoolset-9-gcc*
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
编译如果确实新版gcc头文件也是从gcc源码拷贝上传来解决
cmacke源码安装,下载地址https://cmake.org/files/
tar -zxvf cmake-3.16.4-Linux-x86_64.tar.gz
vi /etc/profile
export PATH=$PATH:/cmake-3.16.4-Linux-x86_64/bin
source /etc/profilevi ~/.bashrc
export PATH=$PATH:/cmake-3.16.4-Linux-x86_64/bin
缺少ttng头文件,这里要安装ttng软件,安装后了还是在usr/include下没头文件,我又到ttng官网下载源码把头文件上传上去才解决,这里也消耗了大量时间。
把下载的源码的头文件上传到/usr/include,其他包缺头文件也是同样处理
cmake版本不对,太高了也不行,太低了也不行。这里按文档要求安装就行。这个事情我消耗了太多时间,版本低了有些代码编译报错,用最新的cmake有的写法已经移除不支持了。
缺少ninja,用yum安装就行
编译成功之后后期操作又缺Python3,由于CentOS7默认安装的是2.7,还不能卸载默认的,卸载默认的之后yum会使用有问题,yum依赖的Python
/bin/sh: Python3_EXECUTABLE-NOTFOUND: command not found
首先从https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz下载Python3源码,上传到Linux上编译
先安装依赖,之前我安装里gcc和make额,没安装的先安装编译器
yum install libffi-devel -y
然后进入Python3代码目录生成makefile
chmod +x configure
./configure --prefix=/usr/local
执行编译和编译安装
make
make install
测试
python3 -V
pip -V
都搞定之后执行./build.sh --gcc就是漫长的编译过程了,持续十几分钟能编译完,下面是几个大概的片段
-- Performing Test HAVE_FDS_BITS - Failed-- Performing Test HAVE_PRIVATE_FDS_BITS-- Performing Test HAVE_PRIVATE_FDS_BITS - Failed-- Performing Test HAVE_SENDFILE_4-- Performing Test HAVE_SENDFILE_4 - Success-- Performing Test HAVE_SENDFILE_6-- Performing Test HAVE_SENDFILE_6 - Failed-- Performing Test HAVE_SENDFILE_7-- Performing Test HAVE_SENDFILE_7 - Failed-- Looking for fcopyfile-- Looking for fcopyfile - not found-- Looking for include file sys/sockio.h-- Looking for include file sys/sockio.h - not found-- Looking for include file linux/ethtool.h-- Looking for include file linux/ethtool.h - found-- Looking for include file sys/poll.h-- Looking for include file sys/poll.h - found-- Looking for include file sys/proc_info.h-- Looking for include file sys/proc_info.h - not found-- Looking for epoll_create1-- Looking for epoll_create1 - found-- Looking for accept4-- Looking for accept4 - found-- Looking for kqueue-- Looking for kqueue - not found-- Looking for disconnectx-- Looking for disconnectx - not found-- Performing Test HAVE_GETNAMEINFO_SIGNED_FLAGS-- Performing Test HAVE_GETNAMEINFO_SIGNED_FLAGS - Success-- Looking for malloc_size-- Looking for malloc_size - not found-- Looking for malloc_usable_size-- Looking for malloc_usable_size - found-- Looking for malloc_usable_size-- Looking for malloc_usable_size - not found-- Looking for posix_memalign-- Looking for posix_memalign - found-- Looking for aligned_alloc-- Looking for aligned_alloc - found
********************************************************[ 86%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/cluster.c.o[ 87%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/command.c.o[ 87%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native-Static.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/entropy_encode.c.o[ 87%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/compress_fragment.c.o[ 88%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native-Static.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/fast_log.c.o[ 88%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native-Static.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/histogram.c.o[ 89%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/compress_fragment_two_pass.c.o[ 90%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native-Static.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/literal_cost.c.o[ 90%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native-Static.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/memory.c.o[ 91%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native-Static.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/metablock.c.o[ 91%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native-Static.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/static_dict.c.o[ 91%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/dictionary_hash.c.o[ 92%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/encode.c.o[ 93%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native-Static.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/utf8_util.c.o[ 93%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/encoder_dict.c.o[ 94%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native-Static.dir/runtime-6.0.22/src/libraries/Native/AnyOS/System.IO.Compression.Native/entrypoints.c.o[ 94%] Linking C static library libSystem.IO.Compression.Native.a[ 95%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/entropy_encode.c.o[ 95%] Built target System.IO.Compression.Native-Static[ 95%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/fast_log.c.o[ 96%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/histogram.c.o[ 96%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/literal_cost.c.o[ 97%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/memory.c.o[ 97%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/metablock.c.o[ 98%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/static_dict.c.o[ 99%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/brotli/enc/utf8_util.c.o[ 99%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/runtime-6.0.22/src/libraries/Native/AnyOS/System.IO.Compression.Native/entrypoints.c.o[100%] Building C object System.IO.Compression.Native/CMakeFiles/System.IO.Compression.Native.dir/__/version.c.o[100%] Linking C shared library libSystem.IO.Compression.Native.soVerifying System.IO.Compression.Native entry points against entrypoints.c Stripping symbols from $<TARGET_FILE:System.IO.Compression.Native> into file $<TARGET_FILE:System.IO.Compression.Native>.dbg[100%] Built target System.IO.Compression.NativeInstall the project...-- Install configuration: "DEBUG"-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.IO.Compression.Native.so.dbg-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.IO.Compression.Native.so-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.IO.Compression.Native.a-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.IO.Ports.Native.so.dbg-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.IO.Ports.Native.so-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.IO.Ports.Native.a-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.Native.so.dbg-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.Native.so-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.Native.a-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.Globalization.Native.so.dbg-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.Globalization.Native.so-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.Globalization.Native.a-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.Net.Security.Native.so.dbg-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.Net.Security.Native.so-- Installing: /runtime-6.0.22/artifacts/bin/native/net6.0-Linux-Debug-x64/./libSystem.Net.Security.Native.a************************************************************************System.Security.Cryptography.Xml -> /runtime-6.0.22/artifacts/bin/System.Security.Cryptography.Xml/netstandard2.0-Debug/System.Security.Cryptography.Xml.dllMicrosoft.Extensions.Logging.Debug -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Logging.Debug/netstandard2.0-Debug/Microsoft.Extensions.Logging.Debug.dllMicrosoft.Extensions.Http -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Http/netstandard2.0-Debug/Microsoft.Extensions.Http.dllMicrosoft.Extensions.Logging.EventSource -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Logging.EventSource/netstandard2.0-Debug/Microsoft.Extensions.Logging.EventSource.dllMicrosoft.Extensions.Logging.TraceSource -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Logging.TraceSource/netstandard2.0-Debug/Microsoft.Extensions.Logging.TraceSource.dllMicrosoft.Extensions.Logging.EventLog -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Logging.EventLog/netstandard2.0-Debug/Microsoft.Extensions.Logging.EventLog.dllMicrosoft.Extensions.Logging.Configuration -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Logging.Configuration/netstandard2.0-Debug/Microsoft.Extensions.Logging.Configuration.dllSystem.Security.Cryptography.Xml -> /runtime-6.0.22/artifacts/bin/System.Security.Cryptography.Xml/net6.0-Debug/System.Security.Cryptography.Xml.dllSystem.Data.OleDb -> /runtime-6.0.22/artifacts/bin/System.Data.OleDb/net6.0-Debug/System.Data.OleDb.dllMicrosoft.Extensions.Logging.Console -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Logging.Console/netstandard2.0-Debug/Microsoft.Extensions.Logging.Console.dllMicrosoft.Extensions.Configuration.Xml -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Configuration.Xml/netstandard2.0-Debug/Microsoft.Extensions.Configuration.Xml.dllMicrosoft.Extensions.Logging.Console -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Logging.Console/net6.0-Debug/Microsoft.Extensions.Logging.Console.dllMicrosoft.Extensions.Hosting -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Hosting/net6.0-Debug/Microsoft.Extensions.Hosting.dllMicrosoft.Extensions.Hosting -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Hosting/netstandard2.1-Debug/Microsoft.Extensions.Hosting.dllMicrosoft.Extensions.Hosting.Systemd -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Hosting.Systemd/netstandard2.1-Debug/Microsoft.Extensions.Hosting.Systemd.dllMicrosoft.Extensions.Hosting.WindowsServices -> /runtime-6.0.22/artifacts/bin/Microsoft.Extensions.Hosting.WindowsServices/netstandard2.1-Debug/Microsoft.Extensions.Hosting.WindowsServices.dllmscorlib -> /runtime-6.0.22/artifacts/bin/manual.mscorlib/net6.0-Debug/mscorlib.dllSystem -> /runtime-6.0.22/artifacts/bin/manual.System/net6.0-Debug/System.dllSystem.Data -> /runtime-6.0.22/artifacts/bin/manual.System.Data/net6.0-Debug/System.Data.dllSystem.Xml -> /runtime-6.0.22/artifacts/bin/manual.System.Xml/net6.0-Debug/System.Xml.dllApiCompat -> Trimming linux-x64 runtime pack assemblies with ILLinker...Trimming linux-x64 OOB assemblies with ILLinker...externals -> Microsoft.NETCore.App.Runtime.Composite -> /runtime-6.0.22/artifacts/obj/Microsoft.NETCore.App.Runtime.Composite/Debug/net6.0/linux-x64/output/ -> /runtime-6.0.22/artifacts/packages/Debug/Shipping//dotnet-runtime-internal-composite-6.0.22-linux-x64.tar.gz/runtime-6.0.22/artifacts/obj/Microsoft.NETCore.App.Runtime.Composite/Debug/net6.0/linux-x64/symbols/ -> /runtime-6.0.22/artifacts/packages/Debug/Shipping//dotnet-runtime-composite-symbols-linux-x64-6.0.22.tar.gzSuccessfully created package '/runtime-6.0.22/artifacts/packages/Debug/Shipping/Microsoft.NETCore.App.Composite.6.0.22.nupkg'.Successfully created package '/runtime-6.0.22/artifacts/packages/Debug/Shipping/Microsoft.NETCore.App.Composite.6.0.22.symbols.nupkg'.Microsoft.NETCore.App.Composite.Bundle -> /runtime-6.0.22/artifacts/obj/Microsoft.NETCore.App.Composite.Bundle/Debug/net6.0/linux-x64/output/ -> /runtime-6.0.22/artifacts/packages/Debug/Shipping//dotnet-runtime-composite-6.0.22-linux-x64.tar.gzMicrosoft.NETCore.App.Ref -> /runtime-6.0.22/artifacts/obj/Microsoft.NETCore.App.Ref/Debug/net6.0/linux-x64/output/ -> /runtime-6.0.22/artifacts/packages/Debug/Shipping//dotnet-targeting-pack-6.0.22-linux-x64.tar.gzSuccessfully created package '/runtime-6.0.22/artifacts/packages/Debug/Shipping/Microsoft.NETCore.App.Ref.6.0.22.nupkg'.Successfully created package '/runtime-6.0.22/artifacts/packages/Debug/Shipping/Microsoft.NETCore.App.Ref.6.0.22.symbols.nupkg'.Microsoft.NETCore.App.Host -> /runtime-6.0.22/artifacts/obj/Microsoft.NETCore.App.Host/Debug/net6.0/linux-x64/output/ -> /runtime-6.0.22/artifacts/packages/Debug/Shipping//dotnet-apphost-pack-6.0.22-linux-x64.tar.gzSuccessfully created package '/runtime-6.0.22/artifacts/packages/Debug/Shipping/Microsoft.NETCore.App.Host.linux-x64.6.0.22.nupkg'.Successfully created package '/runtime-6.0.22/artifacts/packages/Debug/Shipping/Microsoft.NETCore.App.Host.linux-x64.6.0.22.symbols.nupkg'.Microsoft.NETCore.App.Crossgen2 -> /runtime-6.0.22/artifacts/obj/Microsoft.NETCore.App.Crossgen2/Debug/net6.0/linux-x64/output/ -> /runtime-6.0.22/artifacts/packages/Debug/Shipping//dotnet-crossgen2-6.0.22-linux-x64.tar.gzSuccessfully created package '/runtime-6.0.22/artifacts/packages/Debug/Shipping/Microsoft.NETCore.App.Crossgen2.linux-x64.6.0.22.nupkg'.Successfully created package '/runtime-6.0.22/artifacts/packages/Debug/Shipping/Microsoft.NETCore.App.Crossgen2.linux-x64.6.0.22.symbols.nupkg'.dotnet-host -> dotnet-hostfxr -> /runtime-6.0.22/artifacts/obj/dotnet-hostfxr/Debug/net6.0/linux-x64/output/ -> /runtime-6.0.22/artifacts/packages/Debug/Shipping//dotnet-hostfxr-internal-6.0.22-linux-x64.tar.gzdotnet-runtime-deps-centos.7 -> dotnet-runtime-deps-cm.1 -> dotnet-runtime-deps-cm.2 -> dotnet-runtime-deps-debian -> dotnet-runtime-deps-fedora.27 -> dotnet-runtime-deps-fedora.34 -> dotnet-runtime-deps-opensuse.42 -> dotnet-runtime-deps-oraclelinux.7 -> dotnet-runtime-deps-rhel.7 -> dotnet-runtime-deps-sles.12 -> Microsoft.NETCore.App.Runtime -> /runtime-6.0.22/artifacts/obj/Microsoft.NETCore.App.Runtime/Debug/net6.0/linux-x64/output/ -> /runtime-6.0.22/artifacts/packages/Debug/Shipping//dotnet-runtime-internal-6.0.22-linux-x64.tar.gz/runtime-6.0.22/artifacts/obj/Microsoft.NETCore.App.Runtime/Debug/net6.0/linux-x64/symbols/ -> /runtime-6.0.22/artifacts/packages/Debug/Shipping//dotnet-runtime-symbols-linux-x64-6.0.22.tar.gzSuccessfully created package '/runtime-6.0.22/artifacts/packages/Debug/Shipping/Microsoft.NETCore.App.Runtime.linux-x64.6.0.22.nupkg'.Successfully created package '/runtime-6.0.22/artifacts/packages/Debug/Shipping/Microsoft.NETCore.App.Runtime.linux-x64.6.0.22.symbols.nupkg'.Microsoft.NETCore.App.Bundle -> /runtime-6.0.22/artifacts/obj/Microsoft.NETCore.App.Bundle/Debug/net6.0/linux-x64/output/ -> /runtime-6.0.22/artifacts/packages/Debug/Shipping//dotnet-runtime-6.0.22-linux-x64.tar.gzMicrosoft.NET.HostModel -> /runtime-6.0.22/artifacts/bin/Microsoft.NET.HostModel/Debug/netstandard2.0/Microsoft.NET.HostModel.dllSuccessfully created package '/runtime-6.0.22/artifacts/packages/Debug/NonShipping/Microsoft.NET.HostModel.6.0.22-dev.nupkg'.Successfully created package '/runtime-6.0.22/artifacts/packages/Debug/NonShipping/Microsoft.NET.HostModel.6.0.22-dev.symbols.nupkg'.TestUtils -> /runtime-6.0.22/artifacts/bin/TestUtils/Debug/net6.0/TestUtils.dllHostActivation.Tests -> /runtime-6.0.22/artifacts/bin/HostActivation.Tests/Debug/net6.0/HostActivation.Tests.dllBundleHelper -> /runtime-6.0.22/artifacts/bin/BundleHelper/Debug/net6.0/BundleHelper.dllMicrosoft.NET.HostModel.ComHost.Tests -> /runtime-6.0.22/artifacts/bin/Microsoft.NET.HostModel.ComHost.Tests/Debug/net6.0/Microsoft.NET.HostModel.ComHost.Tests.dllMicrosoft.DotNet.CoreSetup.Packaging.Tests -> /runtime-6.0.22/artifacts/bin/Microsoft.DotNet.CoreSetup.Packaging.Tests/Debug/net6.0/Microsoft.DotNet.CoreSetup.Packaging.Tests.dllMicrosoft.NET.HostModel.AppHost.Tests -> /runtime-6.0.22/artifacts/bin/Microsoft.NET.HostModel.AppHost.Tests/Debug/net6.0/Microsoft.NET.HostModel.AppHost.Tests.dllAppHost.Bundle.Tests -> /runtime-6.0.22/artifacts/bin/AppHost.Bundle.Tests/Debug/net6.0/AppHost.Bundle.Tests.dllMicrosoft.NET.HostModel.Bundle.Tests -> /runtime-6.0.22/artifacts/bin/Microsoft.NET.HostModel.Bundle.Tests/Debug/net6.0/Microsoft.NET.HostModel.Bundle.Tests.dllBuild succeeded.0 Warning(s)0 Error(s)Time Elapsed 00:29:43.24
开心 安全可控达标,用实际证明jdk可以国内控制编译;dotnet也可以,还是我自己编译可控的,哈哈
相关文章:
源码编译dotnetcore的runtime
为了dotnetcore运行时的安可目标,特意在国庆假期研究了怎么编译dotnetcore的runtime。由于我们用的是.net6,最新的是8,所以从github下载的.net6的分支代码进行的编译。查遍了国内外资料,估计微软服务太体贴了,竟然没什…...
11个在线免费调整图像大小而不会降低质量工具
图片对于增强您的网站、博客和其他在线平台的视觉效果非常重要,而这些图片的正确尺寸在这里起着重要作用。如果您有多种尺寸的图像并且想要调整为一个尺寸,可以使用多种在线图像调整工具。使用在线工具,没有软件下载或安装的麻烦,…...
聊聊机器的情感和意识
这是鼎叔的第七十七篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。 鼎叔的个人专著《无测试组织-测试团队的敏捷转型》无测试组织:测试团队的敏捷…...
职责链模式,非常容易被忽视的设计模式之一(设计模式与开发实践 P13)
文章目录 现实实例反例优化异步职责链 职责链模式在 C# 中是常见的,他的定义是:使多个对象都有机会处理请求,从而避免发送者和请求者之间的耦合关系,将对象连成一条链并传递该请求,直到有一个对象处理它为止 现实实例…...
架构师选择题--计算机网络
架构师选择题--计算机网络 22年考题21年考题 22年考题 d http:80 https:httpssl :443 b b pop3是邮件接收协议:110 SMTP是邮件发送协议:25 http:80 A 网络隔离:防火墙(逻辑),网闸(物…...
【图论】Linova and Kingdom—CF1336A
Linova and Kingdom—CF1336A 参考文章 思路 1 1 1 号节点为根节点。很容易想到,工业城市在树的下边,旅游城市在树的上边。具体来说,如果节点 u u u 是工业城市,那么它的子树的所有节点一定都是工业城市;如果节点 u…...
【红日靶场】vulnstack3-完整渗透过程
系列文章目录 【红日靶场】vulnstack1-完整渗透过程 【红日靶场】vulnstack2-完整渗透过程 【红日靶场】vulnstack3-完整渗透过程 文章目录 系列文章目录基本信息环境配置开始渗透信息收集暴力破解漏洞利用绕过内网信息收集尝试上线msf上线msf横向移动msf 传达会话给cs横向到域…...
物联网通信技术课程作业资料(TPUNB技术)
参考内容 TPUNB无线通信技术 - 技象科技 (techphant.cn) 技象科技CTO郑凛:用最好的物联网服务最多的人 | 了不起的创变者_技术_通信_团队 (sohu.com) LPWAN技术融合使用大势之下,TPUNB奔跑的一年-IOTE物联网展 (baidu.com) 院士认可国际首创…...
[开源]研发管理项目,支持从需求到代码发布全过程全生命周期管理
一、开源项目简介 neatlogic-rdm支持从需求到代码发布全过程覆盖。具备需求管理、缺陷追踪、测试计划、测试用例、报表仪表板等功能,支持关联外部代码库如GitLab、GitHub等。个性化的属性配置和状态流转控制,能帮助用户管理不同类型项目。 二、开源协议…...
一文生成猫眼电影热榜词云
1.爬取猫眼电影热榜数据 此次爬取的是电影票房的热榜电影名称,具体网站网址为猫眼电影热榜,经过实验观察后发现,此处的数据是通过ajax异步加载的,如果不相信可以使用request对当前网站网址发送请求,会发现无法获取电影…...
监控脚本展示
需求: 监控SVQC,SVCD,FHTC,FHQC,FHCD文件的生成 监控服务器:10.10.3.56 监控路径:/data/app/datafile/ftp/qdttec/10000002/download/yyyyMMdd/* 监控时间:每天7点开始,2…...
【重拾C语言】五、模块化程序设计——函数(定义、调用、参数传递、结果返回、函数原型;典例:打印字符图形、验证哥德巴赫猜想)
目录 前言 五、模块化程序设计——函数 5.1 计算三角形的重心 5.2 函数 5.2.1 函数定义 5.2.2 函数调用 a. 函数调用的形式和过程 b. 参数传递 值传递 指针传递 c. 函数结果返回 5.2.3 函数原型(先调用后定义) 5.3 程序设计实例 5.3.1 打印…...
Unity实现设计模式——迭代器模式
Unity实现设计模式——迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式…...
【数据结构与算法】之“堆”介绍
目录 堆的基本存储 一、概念及其介绍 二、适用说明 三、结构图示 堆的 shift up 堆的 shift down 基础堆排序 一、概念及其介绍 二、适用说明 三、过程图示 优化堆排序 索引堆及其优化 一、概念及其介绍 二、适用说明 三、结构图示 堆的基本存储 一、概念及其介…...
ncnn Fatal signal 11 (SIGSEGV) 使用GPU加速崩溃
如果你的报错堆栈中包含以下信息,其中的关键信息是 anon:dalvik-classes2.dex extracted in memory Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x3c in tid 8619 (eplabv3plusncnn), pid 8619 () 2023-10-07 15:48:31.395 9793-9793 DEBUG …...
计算机考研 | 2018年 | 计算机组成原理真题
文章目录 【计算机组成原理2018年真题44题-15分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2018年真题45题-8分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2018年真题44题-15分】 某计算机采用页…...
用Configuration注解的方式写一个java过滤器的详细实例?
在Java中,可以使用Configuration注解和Spring框架来创建和配置过滤器。下面是一个详细的示例: 首先,创建一个实现javax.servlet.Filter接口的过滤器类,例如MyFilter: import javax.servlet.*; import java.io.IOExce…...
基于Springboot实现旧物置换网站平台演示【项目源码+论文说明】分享
基于Springboot实现旧物置换网站平台演示 摘要 随着时代在一步一步在进步,旧物也成人们的烦恼,许多平台网站都在推广自已的产品像天猫、咸鱼、京东。所以开发出一套关于旧物置换网站成为必需。旧物置换网站主要是借助计算机,通过对用户进行管…...
想要精通算法和SQL的成长之路 - 存在重复元素
想要精通算法和SQL的成长之路 - 存在重复元素 前言一. 存在重复元素II二. 存在重复元素III2.1 基于红黑树增删改查 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 存在重复元素II 原题链接 思路: 我们用HashSet存储元素,做到去重的效果。同时存储…...
使用华为eNSP组网试验⑸-访问控制
今天练习使用华为sNSP模拟网络设备上的访问控制,这样的操作我经常在华为的S7706、S5720、S5735或者H3C的S5500、S5130、S7706上进行,在网络设备上根据情况应用访问控制的策略是一个网管必须熟练的操作,只是在真机上操作一般比较谨慎ÿ…...
iPhone苹果手机闹钟智能跳过节假日怎么设置?
国内绝大多数的手机用户使用的操作系统只有三个,安卓、鸿蒙和苹果的ios。而iPhone苹果手机的忠实用户是非常多的,所以日积月累中用户数量也就非常庞大,并且相当一部分用户都是上班族。而工作忙碌的上班族因为事情比较多,为了避免自…...
TenDB Cluster 简介
文章目录 1.简介2.TSpider3.TenDB4.Tdbctl5.TenDB Cluster Operator参考文献 1.简介 TenDB Cluster 是腾讯游戏 CROS DBA 团队提供的 MySQL 分布式关系型数据库解决方案。主要特点包括:透明分库分表、高可用的 MySQL 集群服务,透明及在线的扩容及缩容&a…...
【刷题笔记10.6】LeetCode:翻转二叉树
LeetCode:翻转二叉树 一、题目描述 给你一颗二叉树的根节点root,翻转这颗二叉树,并返回其根节点。 二、分析 我们在做二叉树题目时候,第一想到的应该是用 递归 来解决。 仔细看下题目的 输入 和 输出,输出的左右…...
【高阶数据结构】图详解第一篇:图的基本概念及其存储结构(邻接矩阵和邻接表)
文章目录 1. 图的基本概念1.1 什么是图1.2 有向图和无向图1.3 完全图1.4 邻接顶点1.5 顶点的度1.6 路径1.7 路径长度1.8 简单路径与回路1.9 子图1.10 连通图1.11 强连通图1.12 生成树 2. 图的存储结构2.1 邻接矩阵2.2 邻接矩阵代码实现结构定义构造函数添加边打印图测试 2.3 邻…...
IPV4跟IPV6的区别
如今互联网快速发展ipv4已经满足不了现在的需求,那么这时候就需要用更大的地址空间来代替,这时候ipv6就可以满足这一需求,相比ipv4它有更大的地址空间可供使用。下面我将分享一下有何区别。 IPv4与IPv6之间的区别: 1、地址长度的区别:IPv4具…...
利用fitnesse实现api接口自动化测试
上午在园子里乱逛,看了不少小伙伴们分享的接口测试方面的知识,仔细想想,我做接口测试也有几个年头了,大家所叙述到的一些经验或多或少,我也曾遇到过,突然意识到知识的点滴积累是多么的重要,我记…...
【LeetCode】1154.一年中的第几天
题目描述: 给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。 示例 1: 输入:date "2019-01-09" 输出:9 解释:给定日期是2019年的第九天。示…...
4.物联网射频识别,RFID开发【智能门禁项目】
补充:学习路径 一。项目介绍及需求分析 1.酒店智能门禁使用场景介绍 1.客人入住 客人在前台办理入住手续,前台管理员通过门禁管理系统为客户开一张门禁卡 客户持卡到相应客房,用IC 卡刷卡开门 客人过了入住时间后,卡自动失效&a…...
CompletableFuture 和 Future 的选择,以及CompletableFuture的用法
在 Java 编程中,异步编程是一种重要的技术,它允许你在执行长时间运行的任务时不会阻塞主线程。为了支持异步编程,Java 提供了 Future 和 CompletableFuture 这两个关键的类。在本文中,我们将比较它们的特点、优缺点以及使用场景。…...
美国第三大财产和意外险公司利宝保险集团利用 OpenText EnCase 取证收集技术控制法律风险和成本
美国第三大财产和意外险公司利宝保险集团利用 OpenText EnCase 取证收集技术控制法律风险和成本 利宝保险集团通过内部取证收集技术控制法律风险和成本。OpenText EnCase Information Assurance(以前称为 EnCase eDiscovery)使保险公司巨头能够自信高效地…...
松江郑州阳网站建设/学生个人网页制作html代码
摘 要即时通讯软件即所谓的聊天工具,其主要用途是用于文字信息的传递与文件传输。使用ECLIPSE作为即时通讯软件的开发工具,使用Socket建立通讯渠道,多线程实现多台计算机同时进行信息的传递,SWING技术等进行实际开发相对比较合适。…...
邯郸企业做网站报价/百度移动点击排名软件
哈希概念 常规搜索: 数据杂乱无章——->顺序查找—–>时间复杂度0(n)。 数据有序—–>二分查找——>时间复杂度0(log(n))。 建立二叉搜索树—–>时间复杂度0(n)(单支树)。 理想的搜索方法是:可以…...
奇璐荣获北京十大高端设计公司称号/上海公司网站seo
在Oracle安装目录\10.2\jdbc\lib 下,找到classes12.jar,它就是用于连接Oracle数据库的JDBC驱动程序。将其拷贝到Tomcat的安装目录"Tomcat 6.0\lib"目录下。重启Tomcat,这个驱动程序即可生效。 编写JSP程序 <% page language&quo…...
家装公司排名前十强/直通车关键词优化口诀
最近给客户搞了一个将非智能电视机内置一个带网口的dongle板子的项目。pcb已经回来,这两天准备贴片。用瑞芯微的rk3128搞的,详细的产品、板子外形。等板子贴片回来了,再补充。 2015-1-25 已经贴出来,跑的非常不错。体积大小42*9…...
怎样把自己的网站做推广/企业网站代运营
前置知识 #define pi acos(-1.0) 是因为 acos为cos的反函数 cos(pi)-1 使用三角函数都要换为弧度制,角度制*pi/180弧度制 C1. Simple Polygon Embedding 题目大意 给定一个边长为 1 的正 2n 边形,求外接正方形的最小面积,n为…...
河南县wap网站建设公司/海外网络推广方案
使用java代码操作oracle数据库需要下载oracle的jdbc连接桥,使用其连接操作。下载引入jdbc连接桥在项目中我使用的是maven构建的项目,由于oracle授权的关系maven源中不可以直接下载。需要到官方的网站去下载,然后手动添加到maven本地仓库里边。…...