# Cross-Compilation

Cross-compilation is the process of building binaries for a different platform or architecture than the one running the compiler.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Cross-Compiling NixOS images

DevFeed: [Cross-Compiling NixOS images](<https://devfeed.tech/articles/cross-compiling-nixos-images-32431.md>)

Original publisher: [Read original article](<https://nixcademy.com/posts/cross-compile-nixos-images/>)

Author: Jacek Galowicz

Published: 2025-12-20T00:00:00Z

Content type: tutorial

Language: en

Sources: [Nixcademy Blog](<https://devfeed.tech/sources/nixcademy-blog.md>)

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [gnu linux](<https://devfeed.tech/topics/gnu-linux.md>), [systemd](<https://devfeed.tech/topics/systemd.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [linux](<https://devfeed.tech/tags/linux.md>), [systemd](<https://devfeed.tech/tags/systemd.md>)

### AI overview

Part four of a series explaining how to cross-compile NixOS appliance images for other platforms while retaining Nix's declarative and composable configuration model.

### Source excerpt

Part 4 of our NixOS appliance image series - Learn how to cross-compile NixOS images without losing declarativity and composability

## Cangjie -- a programming language from Huawei

DevFeed: [Cangjie -- a programming language from Huawei](<https://devfeed.tech/articles/cangjie-a-programming-language-from-huawei-24546.md>)

Original publisher: [Read original article](<https://medium.com/snapp-mobile/cangjie-a-programming-language-from-huawei-fb0f7776be06?source=rss----bcd96e620b02---4>)

Author: Jasper Morgan

Published: 2025-08-19T07:37:53Z

Content type: opinion

Language: en

Sources: [Snapp Mobile - Medium](<https://devfeed.tech/sources/snapp-mobile-medium.md>)

Topics: [Programming language](<https://devfeed.tech/topics/programming-language.md>), [huawei](<https://devfeed.tech/topics/huawei.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [Embedded Systems](<https://devfeed.tech/topics/embedded-systems.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [cloud-computing](<https://devfeed.tech/topics/cloud-computing.md>), [Package Management](<https://devfeed.tech/topics/package-management.md>), [debug](<https://devfeed.tech/topics/debug.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [ide](<https://devfeed.tech/topics/ide.md>)

Tags: [architectures](<https://devfeed.tech/tags/architectures.md>), [bytecode](<https://devfeed.tech/tags/bytecode.md>), [cangjie](<https://devfeed.tech/tags/cangjie.md>), [china](<https://devfeed.tech/tags/china.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [developers](<https://devfeed.tech/tags/developers.md>), [development](<https://devfeed.tech/tags/development.md>), [embedded-systems](<https://devfeed.tech/tags/embedded-systems.md>), [huawei](<https://devfeed.tech/tags/huawei.md>), [huawei-developers](<https://devfeed.tech/tags/huawei-developers.md>), [language](<https://devfeed.tech/tags/language.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [package-management](<https://devfeed.tech/tags/package-management.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [tools](<https://devfeed.tech/tags/tools.md>)

### AI overview

This article examines Cangjie, an open-sourced programming language from Huawei. It describes Cangjie as a C-like language with features associated with Swift and Kotlin, support for embedded systems, mobile development, and cloud architectures, interoperability with C and Python, JVM bytecode compilation, cross-compilation, and integrated developer tools. The article suggests Huawei created it to gain more control over its language roadmap and consolidate development skills across products.

### Source excerpt

Cangjie -- a programming language from Huawei Huawei have been busy. Last month they open-sourced a programming language that is looking pretty interesting. Whilst you might not be writing in Cangjie next week, it's good to see what one of the world's largest technology companies is doing such that they have created a new programming language. TL;DR Cangjie is a C-like programming language that feels more like Swift/Kotlin than Java/C# or JavaScript/Typescript. The idea is for Cangjie to become the common programming language to be used throughout Huawei. Cangjie can be used for embedded systems, mobile development, server-side cloud architectures. It supports a variety of programming paradigms (function, OO, procedural), compilation and integration options. Cangjie can call C libraries (and be called from C), use Python libraries and even compile to JVM bytecode. Cangjie supports language extension to create lightweight DSLs. Primarily Cangjie programs are compiled into machine code -- this include cross compilation which mean they can run natively on different computer architectures. Cangjie comes with a set of in-built tools for developers such as package management, debugging, testing and IDE integration. Cangjie is openly available since this month and is in version 0.53.13. Why create a new language? Simply put, Cangjie gives Huawei a level of control and an economy of scale that they cannot get from other languages. Most mainstream languages are driven predominantly by teams in USA and Europe. It is hard to influence the road map for these languages -- especially for those tightly controlled by corporations (e.g. Java/Kotlin/Swift). Furthermore, consolidating programming skills could be a big efficiency gain for Huawei -- engineers working on products ranging from routers to petabyte storage to cloud computing and mobile devices can coalesce around one language and toolset. Show me some code I won't go into any detail here so this is just to satisfy your curiosit

## Using GoReleaser and GitHub Actions to release Rust and Zig projects

DevFeed: [Using GoReleaser and GitHub Actions to release Rust and Zig projects](<https://devfeed.tech/articles/using-goreleaser-and-github-actions-to-release-rust-and-zig-projects-37762.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/goreleaser-rust-zig/>)

Author: Carlos Alexandro Becker

Published: 2025-01-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Zig](<https://devfeed.tech/topics/zig.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [releases](<https://devfeed.tech/topics/releases.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Docker Image](<https://devfeed.tech/topics/docker-image.md>)

Tags: [changelog](<https://devfeed.tech/tags/changelog.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [docker](<https://devfeed.tech/tags/docker.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [release](<https://devfeed.tech/tags/release.md>), [rust](<https://devfeed.tech/tags/rust.md>), [zig](<https://devfeed.tech/tags/zig.md>)

### AI overview

A tutorial on using GoReleaser v2.5 with GitHub Actions to build, package, sign, and publish Rust and Zig projects across multiple platforms. It covers configuration, cross-compilation, changelog generation, Docker images, and release automation.

### Source excerpt

GoReleaser v2.5 is out with Rust and Zig support - let's explore how we can use it!

## Nix Weekly Recap: 2024-02-18

DevFeed: [Nix Weekly Recap: 2024-02-18](<https://devfeed.tech/articles/nix-weekly-recap-2024-02-18-34706.md>)

Original publisher: [Read original article](<https://nixpkgs.news/archive/2024-02-18/>)

Published: 2024-02-18T00:00:00Z

Content type: article

Language: en

Sources: [nixpkgs.news](<https://devfeed.tech/sources/nixpkgs-news.md>)

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [Development](<https://devfeed.tech/topics/development.md>), [Security](<https://devfeed.tech/topics/security.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [Virtual reality](<https://devfeed.tech/topics/virtual-reality.md>)

Tags: [community](<https://devfeed.tech/tags/community.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [recap](<https://devfeed.tech/tags/recap.md>), [repository](<https://devfeed.tech/tags/repository.md>), [security](<https://devfeed.tech/tags/security.md>), [updates](<https://devfeed.tech/tags/updates.md>), [weekly](<https://devfeed.tech/tags/weekly.md>)

### AI overview

A weekly recap of announcements and development activity in the Nix community and Nixpkgs repository, including cross-compilation tooling, visual learning tools, merge automation, pull-request updates, and security patches.

### Source excerpt

Weekly recap of the announcements and activity in the Nix community and on the NixPkgs package repository.

## Separation of Concerns in Cross-Compilation

DevFeed: [Separation of Concerns in Cross-Compilation](<https://devfeed.tech/articles/separation-of-concerns-in-cross-compilation-32430.md>)

Original publisher: [Read original article](<https://nixcademy.com/posts/cross-compilation-with-nix/>)

Author: Jacek Galowicz

Published: 2024-01-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Nixcademy Blog](<https://devfeed.tech/sources/nixcademy-blog.md>)

Topics: [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [Nix](<https://devfeed.tech/topics/nix.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Dependency management](<https://devfeed.tech/topics/dependency-management.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Dockerfile](<https://devfeed.tech/topics/dockerfile.md>), [static linking](<https://devfeed.tech/topics/static-linking.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [dependency-management](<https://devfeed.tech/tags/dependency-management.md>), [development](<https://devfeed.tech/tags/development.md>), [docker](<https://devfeed.tech/tags/docker.md>), [static-linking](<https://devfeed.tech/tags/static-linking.md>)

### AI overview

This guide explains how Nix applies separation of concerns to cross-compilation in complex C++ projects. It discusses compiler selection, dependency management, external libraries, distribution, Docker-based workflows, and static linking.

### Source excerpt

Master cross-compilation in complex C++ projects with Nix. Simplify dependency management, boost development speed, and reduce costs with this guide!

## C++ with Nix in 2023, Part 2: Package Generation and Cross-Compilation

DevFeed: [C++ with Nix in 2023, Part 2: Package Generation and Cross-Compilation](<https://devfeed.tech/articles/c-with-nix-in-2023-part-2-package-generation-and-cross-compilation-32429.md>)

Original publisher: [Read original article](<https://nixcademy.com/posts/cpp-with-nix-in-2023-part-2-package/>)

Author: Jacek Galowicz

Published: 2023-11-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Nixcademy Blog](<https://devfeed.tech/sources/nixcademy-blog.md>)

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [Development](<https://devfeed.tech/topics/development.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [build-system](<https://devfeed.tech/tags/build-system.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [github](<https://devfeed.tech/tags/github.md>), [platforms](<https://devfeed.tech/tags/platforms.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>)

### AI overview

A tutorial on packaging C++ applications with Nix, using Nix package definitions and flakes to create reproducible builds, generate developer shells, run applications, swap compilers, and cross-compile for different platforms.

### Source excerpt

Learn to package and cross-compile C++ apps with Nix in 2023. Use nix flakes, swap compilers, and cross-compile for various platforms effortlessly.

## How Go Compares with Other Languages for Cloud Backend Development

DevFeed: [How Go Compares with Other Languages for Cloud Backend Development](<https://devfeed.tech/articles/is-go-good-for-backend-development-17805.md>)

Original publisher: [Read original article](<https://encore.dev/blog/go-and-other-languages>)

Author: Marcus Kohlberg

Published: 2023-02-27T00:00:00Z

Content type: comparison

Language: en

Sources: [Encore Updates](<https://devfeed.tech/sources/encore-updates.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [backend-development](<https://devfeed.tech/topics/backend-development.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [backend-development](<https://devfeed.tech/tags/backend-development.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [compiled-language](<https://devfeed.tech/tags/compiled-language.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [go](<https://devfeed.tech/tags/go.md>), [languages](<https://devfeed.tech/tags/languages.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

This article compares Go with other programming languages for building cloud backends. It attributes Go's suitability to compiled execution, memory management, concurrency through goroutines and channels, cross-compilation, and security-related features, while noting that cloud adoption has increased the importance of scalability, reliability, and cost control.

### Source excerpt

A look at how Go compares to other languages when building cloud backends

## How a Kotlin Multiplatform library is published?

DevFeed: [How a Kotlin Multiplatform library is published?](<https://devfeed.tech/articles/how-a-kotlin-multiplatform-library-is-published-22982.md>)

Original publisher: [Read original article](<https://dev.to/kotlin/how-to-build-and-publish-a-kotlin-multiplatform-library-discovering-the-library-structure-3oeo>)

Author: Ekaterina Petrova

Published: 2021-03-25T12:40:27Z

Content type: tutorial

Language: en

Sources: [Kotlin](<https://devfeed.tech/sources/kotlin-2.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Library](<https://devfeed.tech/topics/library.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Maven](<https://devfeed.tech/topics/maven.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [macOS](<https://devfeed.tech/topics/macos.md>)

Tags: [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [inclusive](<https://devfeed.tech/tags/inclusive.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [library](<https://devfeed.tech/tags/library.md>), [macos](<https://devfeed.tech/tags/macos.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [native](<https://devfeed.tech/tags/native.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

This tutorial explains how Kotlin Multiplatform libraries are published. It describes the multiple artifacts, common and platform-specific source sets, Maven project coordinates, and platform constraints such as Kotlin/Native cross-compilation for iOS and macOS.

### Source excerpt

In the first part of the series, we've created our first multiplatform library and published it to the local Maven. Before going public, let's discover published artifacts to get an understanding of the multiplatform publishing format. TL;DR: The Kotlin Gradle plugin creates and configures your library publications automatically, so you don't need to know the details of the publication scheme to successfully deliver your library. But if you are curious, let's discuss it a little! Discovering your library structure If you have published regular platform (for example, android) libraries before, you may notice that the publishing format of a multiplatform library differs quite a lot. There are multiple artifacts for one version of your library, their content format is different (.jar vs .klib), and the number of source sets doesn't match the number of result artifacts. This is because ordinary publishing is not enough for a multiplatform library. Multiplatform libraries have more complex structures compared to normal ones, so the publication is less trivial as well. Here are key differences to keep in mind: Multiplatform libraries consist of multiple parts: common parts with expects declarations and platform-specific parts with actual implementations. Platform-specific code may still be shared across similar platforms (e.g. in a source set shared between the iOS device and simulator, or shared code for all desktop platforms). There should be the ability to publish all those parts from a multiple host because of Kotlin/Native cross-compilation limitations. For example, the artifacts for iOS or macOS can be built only on Mac-OS. Considering all that complexity, adding the ordinary multiplatform dependency requires just a single line of code in your the build.gradle file: dependencies { implementation("io.github.katerinapetrova:mpp-sample-lib:1.0.0") } So how does this magic work? Maven doesn't operate with targets, source sets, and compilations. It operates only with pro

## February 2021 round-up

DevFeed: [February 2021 round-up](<https://devfeed.tech/articles/february-2021-round-up-32471.md>)

Original publisher: [Read original article](<https://mobile.nixos.org/news/2021-03-02-february-2021-round-up.html>)

Author: Samuel Dionne-Riel

Published: 2021-03-02T00:00:00Z

Content type: news

Language: en

Sources: [Mobile NixOS news](<https://devfeed.tech/sources/mobile-nixos-news.md>)

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [Android](<https://devfeed.tech/topics/android.md>), [boot](<https://devfeed.tech/topics/boot.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [boot](<https://devfeed.tech/tags/boot.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [flashing](<https://devfeed.tech/tags/flashing.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [update](<https://devfeed.tech/tags/update.md>), [zip](<https://devfeed.tech/tags/zip.md>)

### AI overview

This fifteenth Mobile NixOS project update reports 18 merged pull requests and describes more hermetic evaluation without NIX_PATH, completed stage-0 boot features, restored armv7 support, and Android flashable ZIP support.

### Source excerpt

This update is the fifteenth in a series of regular updates on the state of the project. Only changes that have been accepted and merged in Mobile NixOS are chronicled here. There's always more work currently in-progress. Notable changes During the month 18 pull requests were merged. Compared to the last month, they're more subtle changes. More hermetic evaluation This started off the work from @eamsden, where uses of <nixpkgs> were removed almost everywhere in #238. With the changes, the value <nixpkgs> is now used only at one location, at the start of the evaluation, in a way that can be overridden easily if needed. This means that evaluation now works fine without a NIX_PATH. This is useful to allow users of Nix flakes to use the project. Similar changes were made in #310 to rely on a single <nixpkgs> value for release.nix and example configuration evaluations. Finalize stage-0 When #262 was merged in December, it was done so with two main features missing. Time was taken to finish the boot features for stage-0 in #300. When a device supports stage-0 boot, a new toggle is shown in the generations list allowing the user to skip rebooting into the generation's kernel. When booting a generation, the device tree built from the same kernel source tree is now used. The pull request itself contains technical details. This was less trivial than expected. armv7 works again Using armv7 with Nixpkgs or NixOS is not always easy. There is no binary cache, and cross-compilation is as YMMV as it is for AArch64. This is the reason why armv7 Mobile NixOS devices haven't seen much work done and things slowly started not working. With #306 time was taken to ensure contributors with armv7 devices wouldn't be left with hard to debug issues from Mobile NixOS itself. With this work finally taken care of, there is a recent known good starting point to use for armv7 devices. A few recent WIP device ports were made on top of these changes. Stay tuned as they may become supported devices a

## Cross-compiling with musl Toolchains

DevFeed: [Cross-compiling with musl Toolchains](<https://devfeed.tech/articles/cross-compiling-with-musl-toolchains-27450.md>)

Original publisher: [Read original article](<https://ariya.io/2020/06/cross-compiling-with-musl-toolchains/>)

Published: 2020-06-22T12:37:59Z

Content type: tutorial

Language: en

Sources: [Ariya Hidayat](<https://devfeed.tech/sources/ariya-hidayat.md>)

Topics: [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [toolchains](<https://devfeed.tech/topics/toolchains.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Zig](<https://devfeed.tech/topics/zig.md>), [C](<https://devfeed.tech/topics/c.md>), [qemu](<https://devfeed.tech/topics/qemu.md>), [ci](<https://devfeed.tech/topics/ci.md>), [make](<https://devfeed.tech/topics/make.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [docker](<https://devfeed.tech/tags/docker.md>), [linux](<https://devfeed.tech/tags/linux.md>), [make](<https://devfeed.tech/tags/make.md>), [mips](<https://devfeed.tech/tags/mips.md>), [qemu](<https://devfeed.tech/tags/qemu.md>), [toolchains](<https://devfeed.tech/tags/toolchains.md>), [windows](<https://devfeed.tech/tags/windows.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

A tutorial on using static musl-based toolchains to cross-compile command-line programs for multiple targets, including MIPS and Windows, from a Linux x86-64 host. It also covers testing non-native binaries with QEMU and migrating FastLZ continuous integration to musl.cc.

### Source excerpt

When working on command-line utilities which can be useful for various platforms, from Windows on x86 to Linux on MIPS, the existence of a cross-compilation is highly attractive. A number of different binaries can be constructed conveniently from a single, typically powerful host system.

## March 2020 round-up

DevFeed: [March 2020 round-up](<https://devfeed.tech/articles/march-2020-round-up-32460.md>)

Original publisher: [Read original article](<https://mobile.nixos.org/news/2020-04-07-march-2020-round-up.html>)

Author: Samuel Dionne-Riel

Published: 2020-04-07T00:00:00Z

Content type: news

Language: en

Sources: [Mobile NixOS news](<https://devfeed.tech/sources/mobile-nixos-news.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [Nix](<https://devfeed.tech/topics/nix.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [boot](<https://devfeed.tech/topics/boot.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [Wi-Fi](<https://devfeed.tech/topics/wi-fi.md>)

Tags: [boot](<https://devfeed.tech/tags/boot.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [news](<https://devfeed.tech/tags/news.md>), [update](<https://devfeed.tech/tags/update.md>), [wi-fi](<https://devfeed.tech/tags/wi-fi.md>)

### AI overview

This March 2020 Mobile NixOS project update reports 17 merged pull requests, including PinePhone support through a new U-Boot system type. It also covers universal stage-2 images, Hydra-based continuous builds, pre-built rootfs images, and progress toward cross-compilation.

### Source excerpt

This update is the fifth in a series of regular updates on the state of the project. Only changes that have been accepted and merged in Mobile NixOS are chronicled here. There's always more work currently in-progress. Notable changes 17 PRs were merged during the month. (The link says 18, but one of them was, to me, late in February, read the previous news item). Let's look at some of these. Pine64 Pinephone "Braveheart" This was teased about on the author's twitter account. The inexpensive Pinephone is the latest new device added to Mobile NixOS. This brings a bit more than only a new device. This is the fourth system type added to Mobile NixOS. The added system type (U-Boot) in theory will give us the ability to support any U-Boot-based system in a common way. In practice the still unmerged and WIP #94 shows how this is true by using U-Boot with another Pine64 device, the Pinebook Pro. A nice thing that was verified again with this new device port is that the stage-2 image (the rootfs, the system.img) is indeed universal. It is using the same AArch64 build of the system image as Android-based devices, and Depthcharge-based devices. Our build for the Pinephone relies on the downstream kernel from the Pine64 community, with only one added patch. The same is done for the U-Boot build. The added patches are user-experience-focused patches that are using the RGB LED of the phone to show the boot status. Other than that, the hardware support is not complete, but it is supported at the same level as other devices, plus Wi-Fi working. See PR #96 for all the details. Hydra builds This is not entirely an in-repository change. There's #97 and #133 that are relevant to this. The mobile-nixos:unstable jobset on Hydra is the other part of the puzzle. What this gives us is automatic continuous builds of Mobile NixOS against the nixos-unstable NixOS channel. From this, we can track changes that break the Mobile NixOS builds, and track internal breakage to some parts of Mobile Nix

## Cross Compiling with Docker on WSL 2

DevFeed: [Cross Compiling with Docker on WSL 2](<https://devfeed.tech/articles/cross-compiling-with-docker-on-wsl-2-27443.md>)

Original publisher: [Read original article](<https://ariya.io/2019/06/cross-compiling-with-docker-on-wsl-2/>)

Published: 2019-06-30T21:24:51Z

Content type: tutorial

Language: en

Sources: [Ariya Hidayat](<https://devfeed.tech/sources/ariya-hidayat.md>)

Topics: [Windows Subsystem for Linux](<https://devfeed.tech/topics/wsl.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [qemu](<https://devfeed.tech/topics/qemu.md>), [C](<https://devfeed.tech/topics/c.md>), [Ubuntu](<https://devfeed.tech/topics/ubuntu.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>)

Tags: [arm](<https://devfeed.tech/tags/arm.md>), [c](<https://devfeed.tech/tags/c.md>), [containers](<https://devfeed.tech/tags/containers.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [docker](<https://devfeed.tech/tags/docker.md>), [qemu](<https://devfeed.tech/tags/qemu.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>), [windows](<https://devfeed.tech/tags/windows.md>), [wsl](<https://devfeed.tech/tags/wsl.md>)

### AI overview

This tutorial explains how to use Docker on WSL 2 to cross-compile a simple C program for ARMv7. It uses Dockcross for Docker-based cross-compilation, QEMU to run the resulting ARM binary, and briefly describes targets including MIPS, PowerPC, Windows, and WebAssembly.

### Source excerpt

Now that WSL 2 packs a true Linux kernel and supports Linux containers (via Docker), it can be a perfect setup to perform application cross compilations.

## Engineering Manager Framework: How to Evaluate Mobile Multiplatform Solutions - Justin Mancinelli

DevFeed: [Engineering Manager Framework: How to Evaluate Mobile Multiplatform Solutions - Justin Mancinelli](<https://devfeed.tech/articles/engineering-manager-framework-how-to-evaluate-mobile-multiplatform-solutions-justin-mancinelli-38200.md>)

Original publisher: [Read original article](<https://touchlab.co/engineering-manager-framework-how-to-evaluate-mobile-multiplatform-solutions>)

Published: 2019-04-15T21:32:04Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [Ionic](<https://devfeed.tech/topics/ionic.md>), [React Native](<https://devfeed.tech/topics/react-native.md>), [Flutter](<https://devfeed.tech/topics/flutter.md>), [Xamarin](<https://devfeed.tech/topics/xamarin.md>)

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [code-sharing](<https://devfeed.tech/tags/code-sharing.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [framework](<https://devfeed.tech/tags/framework.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

This article presents a framework for evaluating mobile multiplatform solutions by examining the input language, build process, runtime, and application output. It distinguishes native, hybrid, and web applications and applies the framework to Ionic, React Native, Xamarin, and Flutter.

### Source excerpt

Touchlab's Director of Project Strategy Justin Mancinelli discusses a framework for how to evaluate mobile multiplatform solutions.

## State of Gradle Java 9 Support

DevFeed: [State of Gradle Java 9 Support](<https://devfeed.tech/articles/state-of-gradle-java-9-support-24660.md>)

Original publisher: [Read original article](<https://blog.gradle.org/java-9-support-update>)

Author: Eric Wendelin

Published: 2017-10-17T04:00:00Z

Content type: article

Language: en

Sources: [The Gradle Blog](<https://devfeed.tech/sources/the-gradle-blog.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [Java](<https://devfeed.tech/topics/java.md>), [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>)

Tags: [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [java](<https://devfeed.tech/tags/java.md>), [java-9](<https://devfeed.tech/tags/java-9.md>), [module](<https://devfeed.tech/tags/module.md>), [security](<https://devfeed.tech/tags/security.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>)

### AI overview

This article explains Gradle's Java 9 support as of Gradle 4.2.1. It covers running and building applications with major JDK 9 distributions, cross-compilation from JDK 9 to JDK 8, limitations around Multi-Release JARs, and using Java 9 modules with Gradle.

### Source excerpt

This post provides an overview of Gradle's Java 9 support, touching on runtime, cross-compilation, MRJARs, and Jigsaw modules support. We've fielded lots of questions since Java 9 was released last month, and decided it best to answer here. What Gradle supports as of version 4.2.1 As of Gradle 4.2.1, building and running Java applications using major distributions of JDK 9 such as Oracle JDK9, OpenJDK9 and Azul JDK9 is fully supported. Further, cross-compilation (built by JDK9 but runs on JDK8) is supported. Some builds will break when upgrading to Java 9, regardless of build tool used. The Java team have made good and necessary changes to the JDK to facilitate better software architecture and security, but this has meant removing access to some APIs. Even if your project is ready, some tools and Gradle plugins have not yet been updated to work with Java 9. There is no convenience methods for consuming and assembling Multi-Release JARs, but you can take a look at this MRJAR-gradle example if you desire to use them. Java Modules aka Jigsaw Support If you're not yet familiar with the Java 9 Platform Module System, also known as Project Jigsaw, you should read Project Jigsaw: Module System Quick-Start Guide. The motivation and terminology are well explained in The State of the Module System. A module is defined as "a named, self-describing collection of code and data" whereby packages are treated as code boundaries, and are explicitly exported and required. Non-exported packages are not visible to module consumers, and further 2 modules cannot export the same packages, nor can they have the same internal packages. This means that packages cannot be "split" or duplicated between multiple modules, or compilation will fail. Here is a guide that shows how to use Java modules with Gradle today. It walks you through the steps necessary to tell Gradle to use the modulepath and not classpath when compiling Java sources and patch modules for testing purposes. A bottom-up approa

## Go: Targeting a different architecture #golang

DevFeed: [Go: Targeting a different architecture #golang](<https://devfeed.tech/articles/go-targeting-a-different-architecture-golang-35406.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/go-targeting-a-different-architecture/>)

Author: Graham King

Published: 2012-06-14T00:08:58Z

Content type: tutorial

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [compilation](<https://devfeed.tech/tags/compilation.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [go](<https://devfeed.tech/tags/go.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

A short guide to building Go programs for a different architecture, such as building for amd64 from an i386 machine. It covers obtaining or building the compiler for the target architecture and setting the architecture before compiling the program.

### Source excerpt

Problem: You're on a i386 machine, and you need to build for amd64, or vice-versa. Solution: Get the for the other architecture. Get both, one of which you'll already have: Build the Go compiler for the other architecture: Set the architecture before building your program: The first two steps you only need to do once. Thank you zephyrtronium in freenode#go-nuts for the help. For other architectures, see Dave Cheney's An introduction to cross compilation with Go