源码编译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上进行,在网络设备上根据情况应用访问控制的策略是一个网管必须熟练的操作,只是在真机上操作一般比较谨慎ÿ…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...