Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.NET Core Runtime ARM32 builds now available #8738

Closed
richlander opened this issue Aug 14, 2017 · 12 comments
Closed

.NET Core Runtime ARM32 builds now available #8738

richlander opened this issue Aug 14, 2017 · 12 comments

Comments

@richlander
Copy link
Member

.NET Core Runtime ARM32 builds now available

Update: ARM32 is now supported with .NET Core 2.1.

The .NET Core team is now producing ARM32 builds for .NET Core Runtime 2.0+, for both Linux and Windows. These builds are great for using on Raspberry Pi. The builds are not yet supported by Microsoft and have preview status. Please give us feedback.

Docker ARM32 images are also available at microsoft/dotnet. See microsoft/dotnet Docker Hub README adopts segmented OS/Arch style for a related announcement.

There are two good sources of .NET Core ARM32 samples that you can use to get started:

Details

The team is producing Runtime and not SDK builds for .NET Core. As a result, you need to build your applications on another operating system and then copy to a Raspberry Pi (or similar device) to run. The samples provided above show you how to do that.

You can get builds from the following links. Official builds are not yet provided.

Note that ARM32 is sometimes referred to as armhf, which refers to hardware floating point capability.

You can remote debug Linux ARM32 applications from a Windows, macOS or Linux machine.

The SDK has not been made available for ARM32 to yet as it doesn't fit within a reasonable performance envelope (space and time) for ARM32. We will resolve this although it isn't a top priority currently (unless feedback suggests otherwise). Our belief is that building on a desktop or build machine will be both more efficient and a reasonable work around to doing development on the Pi for the time being. We also wanted to prioritize the runtime being available since it's necessary for anything to work.

A more near-term need is unit testing on ARM32. There is no replacement for running tests on device. We intend to publish short-term workarounds for this and work on a longer-term solution that is easy to use.

Also published at dotnet/announcements dotnet/runtime#3861.

@BruceForstall
Copy link
Member

cc @dotnet/arm32-contrib @dotnet/jit-contrib

@yfakariya
Copy link
Contributor

I have two questions about the arm32 drop because I was waiting for it long time...

  1. What's really meaning "The builds ... have preview status."? Reliability, performance, or functionality(lack of SDK on arm)?
  2. When will be arm32 supported (or have "stable" status)?

Thanks

@richlander
Copy link
Member Author

I am planing for ARM32 to go stable with .NET Core 2.1. We are still planning .NET Core 2.1.

Preview means two things:

  • No official Microsoft support.
  • The team did significantly less testing for ARM32.

@richlander
Copy link
Member Author

Closing this issue since this was intended as an announcement. Feel free to comment here or open new issues, as appropriate.

@nzain
Copy link

nzain commented Apr 3, 2018

We're using dotnet core 2.0 with great success on an embedded device (cortex A7, but not raspberry) running a self-compiled linux (using buildroot, not debian!). The device is running a minimalistic Asp.Net REST webservice to enable a high-level communication to complex sensors connected to the device. This was a perfect choice, since ...

  • we can reuse existing C# libraries from our related Windows desktop applications.
  • we can use our favorite programming language to work on embedded linux.
  • the performance of C# and Asp.Net Core is amazing (once up-and-running, startup time is terrible).

Many issues are resolved by now, the most impactful open issues are for me:

@dzuda11
Copy link

dzuda11 commented Aug 1, 2019

@nzain or anyone else, please, can you tell me how do you install .NET Core Runtime on buildroot? I have tried to do it just like on raspbbian lite, extract files from dotnet-runtime-2.2.6-linux-arm.tar.gz in /opt/dotnet and run command ln -s /opt/dotnet/dotnet /local/bin, but it doesn't work. When I type dotnet --info it returns in terminal sh: dotnet: not found.

My configuration for buildroot is raspberrypi3_defconfig with 240M instead of 120M

Please help me. Thank you :)

@nzain
Copy link

nzain commented Aug 1, 2019 via email

@dzuda11
Copy link

dzuda11 commented Aug 6, 2019

For everyone how looking this issues with the same problem as me. .NET Core runtime on buildroot.
Problem was the wrong C library, by default for Raspberry Pi configuration it's uClibc-ng, but for running dotnet runtime for ARM32 your have to choose glibc (Toolchain -> C library -> glibc) and symlinks should be ln -s /opt/dotnet/dotnet /usr/bin

@alexanderwwagner
Copy link

@dzuda11
At the moment Iḿ trying to install the .Net Core runtime on my embedded Linux (RaspberryPi/Buildroot)
I did this like you...

It looks like, the install was successfully!
If I type in: "dotnet" then I get the output:

/lib/libstdc++.so.6:no version information available (required by dotnet)
/lib/libstdc++.so.6:no version information available (required by dotnet)
/lib/libstdc++.so.6:no version information available (required by dotnet)
/lib/libstdc++.so.6:no version information available (required by dotnet)
/lib/libstdc++.so.6:no version information available (required by dotnet)
/lib/libstdc++.so.6:no version information available (required by dotnet)
/lib/libstdc++.so.6:no version information available (required by dotnet)
/lib/libstdc++.so.6:no version information available (required by dotnet)
/lib/libstdc++.so.6:no version information available (required by dotnet)

  • -- help
    -- info
    ....etc...

Now I have the problem, that I can't start an application because of this:
/lib/libstdc++.so.6:no version information available (required by dotnet)

Do you have an idea where the problem could be?

Thank you!

@dzuda11
Copy link

dzuda11 commented Aug 30, 2019

First of all, @test4564 you have very funny name xD

Check if you enable C++ support Toolchain -> [*] Enable C++ support and check do you have right binaries for RPi.

@alexanderwwagner
Copy link

alexanderwwagner commented Aug 30, 2019

To choose a good name is sometimes difficult :)

My Settings:

Toolchain:
Toolchain type (Buildroot toolchain)
C library (glibc)
[*] Enable C++ support

Dotnet:
dotnet-runtime-2.2.6-linux-arm.tar.gz (Arm32/Linux) => extract in /opt/dotnet

alex@ElementaryWork:/media/alex/ecb61cd0-ec68-46fb-92c3-4eaf194553fb/opt$ sudo ln -s /opt/dotnet/dotnet /media/alex/ecb61cd0-ec68-46fb-92c3-4eaf194553fb/usr/bin/

@alexanderwwagner
Copy link

So till now I solved the problem.

I adjust my Buildroot settings:
[] Enable Fortran support
[
]Build cross gdb for the host
[*]Copy gconv librarys

Now the problem I described above is solved.

@msftgits msftgits transferred this issue from dotnet/coreclr Jan 31, 2020
@ghost ghost locked as resolved and limited conversation to collaborators Dec 21, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

6 participants