可能的优化:
debian 13 代号 trixie 而不是 loongnix 25
loongnix 25 是使用的 sid 源还是 trixie 源构建的可能要自己自测下。
可能的修复:
scripts/Docker/debian/clang-cross/13/Dockerfile
,需要适配其他架构,而不是只能构建 loong64
的包。
否则代码应该存放到 scripts/Docker/loongnix/loong64/Dockerfile
另外 amd64/debian:12
并不存在 libstdc++-dev-loong64-cross
libgcc-14-dev-loong64-cross
binutils-loongarch64-linux-gnu
这些包
至少需要 amd64/debian:trixie
,但是目前 amd64/debian:trixie
属于 testing
项目相关开发人员给出的建议是比较合理的。
下面是我自己写的一个 patch,未验证。供参考
cat loong64.patch
diff --git a/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj b/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
index 1c3ae7d0..7562f0a1 100644
--- a/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
+++ b/binding/HarfBuzzSharp.NativeAssets.Linux/HarfBuzzSharp.NativeAssets.Linux.csproj
@@ -11,12 +11,14 @@
<PackageFile Include="..\..\output\native\linux\arm64\libHarfBuzzSharp*.so" PackagePath="runtimes\linux-arm64\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\linux\arm\libHarfBuzzSharp*.so" PackagePath="runtimes\linux-arm\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\linux\riscv64\libHarfBuzzSharp*.so" PackagePath="runtimes\linux-riscv64\native\%(Filename)%(Extension)" />
+ <PackageFile Include="..\..\output\native\linux\loong64\libHarfBuzzSharp*.so" PackagePath="runtimes\linux-loong64\native\%(Filename)%(Extension)" />
<!-- Musl -->
<PackageFile Include="..\..\output\native\alpine\x64\libHarfBuzzSharp*.so" PackagePath="runtimes\linux-musl-x64\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpine\x86\libHarfBuzzSharp*.so" PackagePath="runtimes\linux-musl-x86\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpine\arm64\libHarfBuzzSharp*.so" PackagePath="runtimes\linux-musl-arm64\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpine\arm\libHarfBuzzSharp*.so" PackagePath="runtimes\linux-musl-arm\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpine\riscv64\libHarfBuzzSharp*.so" PackagePath="runtimes\linux-musl-riscv64\native\%(Filename)%(Extension)" />
+ <PackageFile Include="..\..\output\native\alpine\loong64\libHarfBuzzSharp*.so" PackagePath="runtimes\linux-musl-loong64\native\%(Filename)%(Extension)" />
</ItemGroup>
<Target Name="IncludeAdditionalTfmSpecificPackageFiles">
<ItemGroup Condition="$(TargetFramework.StartsWith('net4'))">
diff --git a/binding/HarfBuzzSharp.NativeAssets.Linux/buildTransitive/net4/HarfBuzzSharp.targets b/binding/HarfBuzzSharp.NativeAssets.Linux/buildTransitive/net4/HarfBuzzSharp.targets
index e57e8091..db550a78 100644
--- a/binding/HarfBuzzSharp.NativeAssets.Linux/buildTransitive/net4/HarfBuzzSharp.targets
+++ b/binding/HarfBuzzSharp.NativeAssets.Linux/buildTransitive/net4/HarfBuzzSharp.targets
@@ -25,6 +25,9 @@
<_NativeHarfBuzzSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-riscv64\native\libHarfBuzzSharp*.so">
<Dir>riscv64\</Dir>
</_NativeHarfBuzzSharpFile>
+ <_NativeHarfBuzzSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-loong64\native\libHarfBuzzSharp*.so">
+ <Dir>loong64\</Dir>
+ </_NativeHarfBuzzSharpFile>
<!-- Musl -->
<_NativeHarfBuzzSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-x86\native\libHarfBuzzSharp*.so">
@@ -42,6 +45,9 @@
<_NativeHarfBuzzSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-riscv64\native\libHarfBuzzSharp*.so">
<Dir>musl-riscv64\</Dir>
</_NativeHarfBuzzSharpFile>
+ <_NativeHarfBuzzSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-loong64\native\libHarfBuzzSharp*.so">
+ <Dir>musl-loong64\</Dir>
+ </_NativeHarfBuzzSharpFile>
<!-- include everything -->
<Content Include="@(_NativeHarfBuzzSharpFile)">
diff --git a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
index d782128f..9a743aff 100644
--- a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
+++ b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/SkiaSharp.NativeAssets.Linux.NoDependencies.csproj
@@ -22,12 +22,14 @@ The excluded dependencies are:
<PackageFile Include="..\..\output\native\linuxnodeps\arm64\libSkiaSharp*.so" PackagePath="runtimes\linux-arm64\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\linuxnodeps\arm\libSkiaSharp*.so" PackagePath="runtimes\linux-arm\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\linuxnodeps\riscv64\libSkiaSharp*.so" PackagePath="runtimes\linux-riscv64\native\%(Filename)%(Extension)" />
+ <PackageFile Include="..\..\output\native\linuxnodeps\loong64\libSkiaSharp*.so" PackagePath="runtimes\linux-loong64\native\%(Filename)%(Extension)" />
<!-- Musl -->
<PackageFile Include="..\..\output\native\alpinenodeps\x64\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-x64\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpinenodeps\x86\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-x86\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpinenodeps\arm64\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-arm64\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpinenodeps\arm\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-arm\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpinenodeps\riscv64\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-riscv64\native\%(Filename)%(Extension)" />
+ <PackageFile Include="..\..\output\native\alpinenodeps\loong64\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-loong64\native\%(Filename)%(Extension)" />
</ItemGroup>
<Target Name="IncludeAdditionalTfmSpecificPackageFiles">
<ItemGroup Condition="$(TargetFramework.StartsWith('net4'))">
diff --git a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/buildTransitive/net4/SkiaSharp.targets b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/buildTransitive/net4/SkiaSharp.targets
index 816a0521..b8a5fdcd 100644
--- a/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/buildTransitive/net4/SkiaSharp.targets
+++ b/binding/SkiaSharp.NativeAssets.Linux.NoDependencies/buildTransitive/net4/SkiaSharp.targets
@@ -25,6 +25,9 @@
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-riscv64\native\libSkiaSharp*.so">
<Dir>riscv64\</Dir>
</_NativeSkiaSharpFile>
+ <_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-loong64\native\libSkiaSharp*.so">
+ <Dir>loong64\</Dir>
+ </_NativeSkiaSharpFile>
<!-- Musl -->
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-x86\native\libSkiaSharp*.so">
@@ -42,6 +45,8 @@
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-riscv64\native\libSkiaSharp*.so">
<Dir>musl-riscv64\</Dir>
</_NativeSkiaSharpFile>
+ <_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-loong64\native\libSkiaSharp*.so">
+ <Dir>musl-loong64\</Dir>
<!-- include everything -->
<Content Include="@(_NativeSkiaSharpFile)">
diff --git a/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj b/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
index cb841711..66054bf6 100644
--- a/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
+++ b/binding/SkiaSharp.NativeAssets.Linux/SkiaSharp.NativeAssets.Linux.csproj
@@ -11,12 +11,14 @@
<PackageFile Include="..\..\output\native\linux\arm64\libSkiaSharp*.so" PackagePath="runtimes\linux-arm64\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\linux\arm\libSkiaSharp*.so" PackagePath="runtimes\linux-arm\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\linux\riscv64\libSkiaSharp*.so" PackagePath="runtimes\linux-riscv64\native\%(Filename)%(Extension)" />
+ <PackageFile Include="..\..\output\native\linux\loong64\libSkiaSharp*.so" PackagePath="runtimes\linux-loong64\native\%(Filename)%(Extension)" />
<!-- Musl -->
<PackageFile Include="..\..\output\native\alpine\x64\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-x64\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpine\x86\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-x86\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpine\arm64\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-arm64\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpine\arm\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-arm\native\%(Filename)%(Extension)" />
<PackageFile Include="..\..\output\native\alpine\riscv64\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-riscv64\native\%(Filename)%(Extension)" />
+ <PackageFile Include="..\..\output\native\alpine\loong64\libSkiaSharp*.so" PackagePath="runtimes\linux-musl-loong64\native\%(Filename)%(Extension)" />
</ItemGroup>
<Target Name="IncludeAdditionalTfmSpecificPackageFiles">
<ItemGroup Condition="$(TargetFramework.StartsWith('net4'))">
diff --git a/binding/SkiaSharp.NativeAssets.Linux/buildTransitive/net4/SkiaSharp.targets b/binding/SkiaSharp.NativeAssets.Linux/buildTransitive/net4/SkiaSharp.targets
index fa4eff2b..d09ddac7 100644
--- a/binding/SkiaSharp.NativeAssets.Linux/buildTransitive/net4/SkiaSharp.targets
+++ b/binding/SkiaSharp.NativeAssets.Linux/buildTransitive/net4/SkiaSharp.targets
@@ -25,6 +25,9 @@
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-riscv64\native\libSkiaSharp*.so">
<Dir>riscv64\</Dir>
</_NativeSkiaSharpFile>
+ <_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-loong64\native\libSkiaSharp*.so">
+ <Dir>loong64\</Dir>
+ </_NativeSkiaSharpFile>
<!-- Musl -->
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-x86\native\libSkiaSharp*.so">
@@ -42,6 +45,9 @@
<_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-riscv64\native\libSkiaSharp*.so">
<Dir>musl-riscv64\</Dir>
</_NativeSkiaSharpFile>
+ <_NativeSkiaSharpFile Include="$(MSBuildThisFileDirectory)..\..\runtimes\linux-musl-loong64\native\libSkiaSharp*.so">
+ <Dir>musl-loong64\</Dir>
+ </_NativeSkiaSharpFile>
<!-- include everything -->
<Content Include="@(_NativeSkiaSharpFile)">
diff --git a/scripts/Docker/_clang-cross-common.sh b/scripts/Docker/_clang-cross-common.sh
index 57b32a83..57d747a4 100755
--- a/scripts/Docker/_clang-cross-common.sh
+++ b/scripts/Docker/_clang-cross-common.sh
@@ -3,7 +3,7 @@ set -ex
-
+
diff --git a/scripts/Docker/alpine/clang-cross/Dockerfile b/scripts/Docker/alpine/clang-cross/Dockerfile
index c6ffe443..713b5da6 100644
--- a/scripts/Docker/alpine/clang-cross/Dockerfile
+++ b/scripts/Docker/alpine/clang-cross/Dockerfile
@@ -13,6 +13,7 @@ ARG BUILD_ARCH=arm64
RUN case ${BUILD_ARCH} in \
arm) TOOLCHAIN_ARCH=armv7-alpine-linux-musleabihf ; TOOLCHAIN_ARCH_TARGET=armv7-alpine-linux-musleabihf ;; \
arm64) TOOLCHAIN_ARCH=aarch64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=aarch64-alpine-linux-musl ;; \
+ loong64) TOOLCHAIN_ARCH=loongarch64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=loongarch64-alpine-linux-musl ;; \
riscv64) TOOLCHAIN_ARCH=riscv64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=riscv64-alpine-linux-musl ;; \
x86) TOOLCHAIN_ARCH=i586-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=i586-alpine-linux-musl ;; \
x64) TOOLCHAIN_ARCH=x86_64-alpine-linux-musl ; TOOLCHAIN_ARCH_TARGET=x86_64-alpine-linux-musl ;; \
@@ -35,12 +36,14 @@ RUN . /etc/skia-env \
&& case "${BUILD_ARCH}" in \
arm) APK_ARCH=armv7 ;; \
arm64) APK_ARCH=aarch64 ;; \
+ loong64) APK_ARCH=loongarch64 ;; \
riscv64) APK_ARCH=riscv64 ;; \
x86) APK_ARCH=x86 ;; \
x64) APK_ARCH=x86_64 ;; \
*) echo "Unsupported architecture: ${BUILD_ARCH}" && exit 1 ;; \
esac \
&& case "${BUILD_ARCH}" in \
+ loong64) DISTRO_VERSION=3.21 ;; \
riscv64) DISTRO_VERSION=3.20 ;; \
*) DISTRO_VERSION=3.17 ;; \
esac \
diff --git a/scripts/Docker/alpine/clang-cross/build-local.sh b/scripts/Docker/alpine/clang-cross/build-local.sh
index 591b9d2d..b9537eef 100755
--- a/scripts/Docker/alpine/clang-cross/build-local.sh
+++ b/scripts/Docker/alpine/clang-cross/build-local.sh
@@ -2,7 +2,7 @@
set -ex
-
+
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
diff --git a/scripts/cake/native-shared.cake b/scripts/cake/native-shared.cake
index 860be68d..fe6e6d22 100644
--- a/scripts/cake/native-shared.cake
+++ b/scripts/cake/native-shared.cake
@@ -119,6 +119,9 @@ string ReduceArch(string arch)
return "arm64";
case "riscv64":
return "riscv64";
+ case "loongarch64":
+ case "loong64":
+ return "loong64";
}
throw new Exception($"Unknown architecture: {arch}");