源码编译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上进行,在网络设备上根据情况应用访问控制的策略是一个网管必须熟练的操作,只是在真机上操作一般比较谨慎ÿ…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
