Programing Jetson Nano with C++

Depends on what you mean by native. VsCode has excellent remote debug support using ssh under the hood. Extensions generally run on the remote as well. I’m using clangd as the language server, or you can use intellisense. I’ve found intellisense has some reliability issues on nano where clangd works better. As long as there is a compile_commands.json generated by your build system, either should work. Qt does it’s own thing. GLWT. I think QtCreator uses libclang if it’s installed.

gnome-builder works out of the box. It’s the Gtk equiavalent to QtCreator. The flatpak version is more recent than that in the apt repos.

try:

sudo apt install flatpak
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
(press Y when prompted)
flatpak install flathub org.gnome.Builder
flatpak run org.gnome.Builder

You should also see Builder in your app drawer as well. Glade is also available but it’s integrated into Builder at this point so there’s little utility to it on it’s own. You can target most GLib/Gtk versions with that IDE.

Depends on what you want to do. This might help:

No idea. Haven’t used Eclipse in ages. You can cross compile with a bunch of different build systems including QtCreator but I think it may be tricky becuase of the Nvidia libraries.

If your app doesn’t depend on anything Nvidia, it’s quite easy. If it’s a GStreamer app, just refer to nvidia elements by name

bla = gst_element_factory_make("nvblabla", "bla")
g_object_set(G_OBJECT(bla), "propertyname", "somevalue", nullptr);

And so on. Since those elements aren’t actually linked at compile time it works. If you need to actually build against some nvidia library, write your code like this:

void foo() {
#ifdef HAS_NVIDIA_THING
  real_nvidia_foo();
#else // !HAS_NVIDIA_THING
  fake_nvidia_foo();
#endif // HAS_NVIDIA_THING
}

And when your build system finds libnvidiathing it can set -DHAS_NVIDIA_THING and that part of your code can be enabled. How exactly to do that depends on which build system you use, but generally you can just add -DHAS_NVIDIA_THING it to CFLAGS when libnvidiathing actually exists.

If you do it that way you can at least make test builds and make sure your app’s ui and so on works. Then you define HAS_NVIDIA_THING and test the real Nvidia code works as well. If you’re not able to cross compile for whatever reason, you can still iterate quickly and build on actual hardware when you need to test those parts.

Thanks mdegans;

A lot of information in your reply that I am going to look at.

You mentioned GStreamer which I use to view cameras remotely. I have intelsense cameras which I use to view with realsense-viewer headlessly via ssh -X; not possible now. I don’t know which upgrade did it (Intel’s or Nvidias) but now I have to use gstreamer for headless operation. My project is a wheeled robot running headless until I can figure out how to run it autonomously then combine to make it a cobot.

Again Thank you mdegans for your great info.

andyinyakima

Yeah. ssh -X won’t work well (if at all) with video or graphics. I’d suggest modifying your GStreamer pipeline with a tee ! queue ! some-network-sink somewhere to stream the data directly to a video player like vlc. Unfortunately the options to do that with on the version of GStreamer bundled with 18.04 aren’t great. It might be worth upgrading to a newer release (building GStreamer from source), but IIRC the Nvidia elements aren’t tested in that configuration.

Good luck. Newer versions of GStreamer have better WebRTC support that you might find of use.