question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Add support for aarch64 release builds

See original GitHub issue

My 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:closed
  • Created 5 years ago
  • Reactions:28
  • Comments:52 (21 by maintainers)

github_iconTop GitHub Comments

9reactions
azimuthdevelopercommented, Aug 27, 2020

@lewcianci no plans for a hosted pool.

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

7reactions
vtbassmattcommented, Mar 20, 2020

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!

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found