Must a program meet OS requirements and CPU architecture requirements to run/install?

Hey all,

I’ve just gotten a new JetsonTX2 and am excited to start developing, however I’m finding it rather difficult to setup the way I’d like. Specifically I’m trying to install a couple of programs:

  1. teamviewer - this is a program for remote control of one computer from another also running the teamviewer software

  2. visual studio code - this is the text editor I’d like to do development with because of its vast library of plugins/addons

Both of these programs say they are available on linux-based operating systems, and my jetson is running the version of Ubuntu it came with from the factory, so I figured there would be no problems. Despite this, I haven’t successfully gotten either program to install.

Some googling indicates that this is because the CPU on the Jetson uses a particular architecture called “ARM”, while most other consumer computers use a CPU architecture called “x86”. This doesn’t make any sense to me though! Throughout my life, I’ve never been asked what architecture my CPU uses when downloading and installing a program, only which operating system my computer is running. I’ve also never seen programs advertised as being able to run on a CPU with a particular architecture, only on a computer with a particular operating system.
Furthermore, I thought the point of writing programs in “high level languages” was to make the program independent from the hardware it’s executed on. As far as I know, the only way to write a program for a specific CPU architecture would be to write that program in a language that only that architecture understands (i.e. assembly or machine code). I find it hard to believe that any of the programs I’m trying to install are written in such low level languages that they can only run on a specific CPU architecture.

If there’s a gap/flaw in my understanding of how programs compiled, I have a couple questions for the community:

  1. Where is the gap in my knowledge?
  2. Is there any way to get programs designed for x86 architecture to run on the jetson? I have more programs than the ones listed here that I’d like to use.

If my understanding of how programs are compiled seems correct, I have some different questions for the community:

  1. If it’s not the ARM architecture of the CPU causing the problems, what else could cause these programs to not install even though they say they’re available for linux?
  2. What next steps should I take to try and install these programs?

Looking forward to your replies!

Jetsons are 64-bit ARM. Just “ARM” implies older 32-bit. Anything from arm64/aarch64/ARMv8-a is valid. 32-bit is not what you want, and just “ARM”, or armhf, or arm32 should be considered a foreign architecture (compatibility modes can run 32-bit, but this requires a lot of added support for a foreign architecture which will run very slow).

You might find this of interest:

I’ve heard of people trying to get Teamviewer to work, but I don’t know if it has been successful yet. Basically I see armhf (32-bit) versions out there, but you need 64-bit.

Others will probably have suggestions on how to add a better/more-preferred environment.