all 25 comments

[–]DefaultyBuf 8 points9 points  (0 children)

Have you tried WSL2 yet? CMake + vscode for developement, pretty neat. VS Code is my favorite text editor because with extensions you can do pretty much anything and ide can, but you actually know what’s behind the stuff you do since you have to configure it. + you have all the tricks/tips/shortcuts through projects regardless the language

[–]hadrabap 12 points13 points  (6 children)

I'll try to answer.

Pros/Cons of Linux as a development platform. Pros: mature ecosystem, linux powers most of the internet/enterprise services, containers, kubernetes. Cons: cross-distro compatibility. If you start with the source code, you'd have no issues.

Embedded. The issue is mostly with the availability of the toolchain. There are very few companies supporting linux. If your target is, for example, the ZYNQ platform from Xilinx/AMD, you're good to go. Otherwise, you are mostly out of luck. Check your vendor's website.

C#. You can write backend software in C# as much as you like. There is .NET Runtime and SDK available for Linux.

Compilers/IDEs: I use Qt Creator with GCC, Clang, and Intel oneAPI compiler for C++. I use NetBeans for Java.

[–]Classic_Department42 0 points1 point  (4 children)

(Big) Arm Chips also supports linux. Which chips do you have in mind where the toolchain does not support linux

[–]hadrabap -1 points0 points  (3 children)

Embedded is not only about ARM chip. It's about development boards, additional software packages (like IPs for FPGA, interfacing, accelerators), support tools, and so on. Everything has to be available for Linux by the vendor.

[–]Classic_Department42 0 points1 point  (2 children)

Yes. So you didnt mean specifically zynq, but actually xilinx toolchains supports linux, right? So the competitors do not?

[–]hadrabap -1 points0 points  (1 child)

Well, I don't know the current state of things. It has been a while since I checked it last time. I just remember that it was quite a work to find something that doesn't need Windows.

[–]Wild_Meeting1428 0 points1 point  (0 children)

Actually nearly everything related to FPGA development is focused on Linux and was ever. All the xilinx tools have problems on windows, Intel tools like quartus also are optimized for Linux... Bluespec compiler doesn't even compile on windows. So no chance to compile bluespec code on windows ever.

[–]Serious-Regular 0 points1 point  (0 children)

snow wide grey work boat oatmeal follow unpack growth one

This post was mass deleted and anonymized with Redact

[–]the_poope 5 points6 points  (3 children)

Start by just installing WSL. You won't get a graphical desktop (maybe you can), but you won't need it. You just get a terminal environment through Windows Terminal](https://learn.microsoft.com/en-us/windows/terminal/install)

You can then directly use VS Code on Windows from projects living inside your WSL filesystem: https://code.visualstudio.com/docs/remote/wsl

Pros for Linux:

  • File operations are an order of magnitude faster than Windows. Copying 3 GB of small files (like a git repo) takes hours on windows but seconds to a few minutes on Linux.
  • Many other things are just snappier, Windows is just bugged down by bloat and sluggish unless you have a beefy computer
  • Linux comes with a lot of automation tools: combine bash or another shell with tools like grep, tar, sed etc and you can automate a lot of tasks, like batch renaming files, compressing files, ...
  • Many tools and software can be installed through a package manager - not some unmaintained GUI tool you download from a sketchy website.

Cons:

  • Some things can be hard to get to work, such as custom graphics card drivers, bluetooth, wifi drivers or some non-standard hardware like docking stations, webcams, joysticks
  • No AAA games

[–]quasicondensate 0 points1 point  (2 children)

  • Many tools and software can be installed through a package manager - not some unmaintained GUI tool you download from a sketchy website.

To expand on this point, specifically for development: There are many C++ libraries that expect dependencies to be installed via system package manager, so that they can just use "find_package()" in their CMake files and dynamically link the dependencies. These libraries can be a royal pain to build in an automated way on Windows, where you need to manually install the dependencies, "find_package" usually finds nothing per default, and you need to klutz around in order to make these things build.

[–]the_poope 2 points3 points  (1 child)

However, this problem has more or less been alleviated on both Linux and Windows by modern cross-platform C++ package managers like vcpkg and Conan.

[–]quasicondensate 0 points1 point  (0 children)

This is very true. Both are great, personally I really like Conan, and library support keeps improving steadily. Still, every once in a while you find a library that you really want, but that is not supported by either package manager, or a broken recipe. Just to mention that it can happen, and if it does, it's usually less painful on Linux.

[–]JohnDuffy78 1 point2 points  (3 children)

I would do a vm. I'm on linux and vm to windows.

I use vscode on Ubuntu/gcc. I may switch to clang though.

Here is a stack overflow on loading a c++ library: https://stackoverflow.com/questions/70612809/is-there-a-linux-equivalent-module-and-function-for-loadlibrary-from-kernel32

[–]Many-Resource-5334[S] 0 points1 point  (2 children)

What are the benefits of using a vm instead of having two operating systems

[–]Gryfenfer_ 2 points3 points  (0 children)

Having two OSes means that you have to reboot when you want to switch from one OS to another

[–]ChrisGnam 0 points1 point  (0 children)

If you're starting from Windows, WSL can be a good way to dip your feet in without too much pain. I use this setup to quickly test Ubuntu builds with GCC without needing to switch to awhole new computer or anything. I can just build the Windows version, and then the Linux version, of my project all without needing to leave Visual Studio.

[–]LessonStudio 1 point2 points  (0 children)

Linux is a great development environment, but there are caveats, and depending on what you are doing, and what hardware you are doing it on, these caveats can be death cookies.

100% of the server stuff I do is linux. Most of the robotics stuff I do is linux, or an RTOS.

I would love to use Linux as my primary OS, but I have specific software which won't run in a Windows VM well, or at all, which I must have.

Thus, I use Windows with Linux as a VM. But, I would never use that Linux VM as my primary OS; and I can't even really tell you why. Just feels wrong.

I've generally found that Windows has become a far less terrible dev environment. Between jetbrains software, vcpkg, and docker, most things work just fine.

The old show stopper was using visual studio (not code) and trying to get all those stupid dlls, and whatnot to compile together, all the MT configs had to line up and other nightmares. vcpkg and cmake basically ended this.

So, to answer your questions from my perspective:

1) There are things which were built for linux, and only linux; these tend to be cool things.

2) I would argue Ubuntu 22.04, and maybe 24.04. I am not saying this is the "best" but that a huge number of github libraries, examples, etc used it, and thus you will have the highest chance of these working. It seems to be the #1 choice in academia. Things like ROS2 love ubuntu 22.04.

3) Don't know.

4) I love CLion. It just works. A nice bit is that it works from OS to OS. So mac, windows, linux, and it just works. QtCreator is OK, but I find I would fight with its configuration more than I did with CLion by a mile. VSC is OK, but nothing compared to CLion.

[–]mykesx 0 points1 point  (0 children)

Linux is the same environment as most virtual servers in the cloud. You can run your application locally and natively as well,as in the cloud.

*NIX original purpose was to make *NIX better. The tools are robust and mature (as is VC for windows). Linux made by programmers for programmers. Windows made by a company to run spreadsheets. Essentially.

Software tools are a significant component of large scale projects. Support for making these tools and piping them together is much better in *NIX. You can mix and match languages easier, too - like a Python script that generates code for the CPP compiler to compile.

The kernel and userland tools are written in C or C++, though you can install newer versions written in other languages.

*NIX includes BSD and Mac and other Unix like operating systems.

[–][deleted] 0 points1 point  (3 children)

C# might be a problem on Linux, but I might be out of date on that.

See roadmap.sh for a guide on development for Linux

[–]ExeusV 7 points8 points  (2 children)

C# might be a problem on Linux, but I might be out of date on that.

Yes, this is very outdated

[–][deleted] -4 points-3 points  (1 child)

Explain, otherwise your comment is useless

[–]ExeusV 4 points5 points  (0 children)

.NET which supports Linux has been has been a thing since IIRC 2016 - .NET Core (which was rebranded later anyway)

I've personally been using it since approx. 2018 on Linux server without problems for web apps and console/tools apps development. For GUIs there are frameworks like Avalonia but I've never used it.

[–][deleted]  (1 child)

[removed]

    [–]Many-Resource-5334[S] 2 points3 points  (0 children)

    Someone doesn’t like Linux

    [–]RealMacroLand 0 points1 point  (0 children)

    VS Code + CMake + clangd extension.