Add support for aarch64 release builds
See original GitHub issueMy team recently encountered a situation where we needed to run the azure-pipelines-agent on an aarch64 (ARM 64bit) device.
At this time, the official release builds only support:
- Windows x86/64
- macOS
- Linux x64/ARM32
We were able to install and run the Linux ARM32 release flavor by installing the armhf dependencies on an aarch64 device (Jetson TX2), however, it would be nice to have first class support for this architecture due to it’s prevalence in the IoT space (Raspberry Pi 3B+, PINE64, Nividia Jetson etc.).
#Install the ARM32 gcc toolchain
sudo apt-get install gcc-arm-linux-gnueabihf
#Symlink the armhf ld kernel module (this allows loading ARM32 bins on ARM64 OS and comes with the ARM32 toolchain)
sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib/ld-linux-armhf.so.3
#Add arm-linux-gnueabihf libs to LD_LIBRARY_PATH
#(This tells ld where it can find libs in addition to the default /lib dir,
#Point it to the default path for armhf libs
export LD_LIBRARY_PATH="/usr/arm-linux-gnueabihf/lib/"
#OR For a persistent version of the above
#Symlink the relevant kernel modules
sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib/ld-linux-armhf.so.3
sudo ln -s /usr/arm-linux-gnueabihf/lib/libdl.so.2 /lib/libdl.so.2
sudo ln -s /usr/arm-linux-gnueabihf/lib/libpthread.so /lib/libpthread.so
sudo ln -s /usr/arm-linux-gnueabihf/lib/libpthread.so.0 /lib/libpthread.so.0
sudo ln -s /usr/arm-linux-gnueabihf/lib/libstdc++.so.6 /lib/libstdc++.so.6
sudo ln -s /usr/arm-linux-gnueabihf/lib/libm.so.6 /lib/libm.so.6
sudo ln -s /usr/arm-linux-gnueabihf/lib/libgcc_s.so.1 /lib/libgcc_s.so.1
sudo ln -s /usr/arm-linux-gnueabihf/lib/libc.so.6 /lib/libc.so.6
sudo ln -s /usr/arm-linux-gnueabihf/lib/librt.so.1 /lib/librt.so.1
#Enable installation of armhf packages
dpkg --add-architecture armhf
#Install armhf version of libcurl and libicu
apt-get install libcurl4-openssl-dev:armhf libicu55:armhf
#Install dotnet core (aarch 64 build prolly works here too)
wget https://download.visualstudio.microsoft.com/download/pr/10b96626-02d8-415a-be85-051a2a48d0c2/5ec51d3d9f092ba558fb5f1f03d26699/dotnet-sdk-2.1.403-linux-arm.tar.gz
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-2.1.403-linux-arm.tar.gz -C $HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet
Issue Analytics
- State:
- Created 5 years ago
- Reactions:28
- Comments:52 (21 by maintainers)
Top Results From Across the Web
Releases for AArch64 (ARM64) - Compiler - Swift Forums
These releases currently only support x86_64. ... We don't even have a working AArch64 Linux build yet (see the external CI bot).
Read more >Update app architecture from Arm32 to Arm64
This guide will cover the recommended steps for changing an existing app with support for 32-bit Arm platform architecture over to the more ......
Read more >Support 64-bit architectures | Android game development
Enabling builds for your native code is as simple as adding the arm64-v8a and/or x86_64, depending on the architecture(s) you wish to support,...
Read more >2.5. Build Options — Trusted Firmware-A 2.9.0 documentation
ENABLE_LTO : Boolean option to enable Link Time Optimization (LTO) support in GCC for TF-A. This option is currently only supported for AArch64....
Read more >Cross v0.2.2 Released : r/rust
We've just released cross v0.2.2, a tool for cross-compiling and testing of ... Add support for remote Docker or Podman nodes.
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
I find that strange considering that Microsoft has invested quite heavily in IoT and yet we can’t use the build agents to build ARM64 images natively and have to use QEMU to build instead. But it’s perhaps not in high enough demand yet 😄
Thanks for getting back to me
Update: I have ordered hardware to serve as our build farm, and we’re also working on a new PR to add this support. Especially with the pandemic ongoing, I think we’re still several weeks away from any new news, but things are happening!