Aarch64 Library .so File from X86 .so file

Hello , if we are introducing a new package in AGX Xavier and have a X86 library File with us (.so) , can bazel build the library file as per specification,as required by AGX Xavier in .so format ? Is this possible ?

You have an x86 compiled shared library (.so) that you want Bazel to output as an aarch64 to run on AGX Xavier? If I understood, the short answer is no, at least, not practically. You need to cross-compile your source on an x86 machine to output an aarch64 binary/shared object.

Bazel is a build system, not a compiler itself, and there is no tool for it to invoke that would produce you what you need without the original source.

It is all software, so in theory, you could “decompile” the shared object or even an arbitrary binary and recompile it into the aarch64 instruction set and target system calls, transcoding it basically. This is not very realistic to actually do, however. There are emulation options when considering to execution where you emulate an arm64 processor as a virtual machine, but nothing feasible I can think of that would actually output a valid aarm64 binary for you to run on a real arm64 processor.

i am cross compiling using CMake now on a X86_64 , i have all the source .h ( Header Files ) , which i want to conver to .so(shared Library ) for ARM 64 .

I am actually trying to make a ROS package work, which came with a X86 library , this ROS Package works fine on X86, need to port this package for ARM 64.

Do you have source for the shared library in addition to the headers? I gather if you’re using CMake already, the answer is yes. If so, then do you want to build the shared library for aarch64 using cmake (not bad) and have Bazel package the resulting binary, or build it all using Bazel (need to migrate, more work)?

I would build the .so for aarch64 using CMake, then copy the shared object into your Bazel workspace and add a “data” dependency for it to include it in a target’s runfiles (should be Bazel docs on this).

If you could describe a bit more about what this ROS package looks like and how you are planning to use it with Isaac SDK, it would help me understand the problem.

Hi Hemals , I am planning to build the library using Cmake as migrating to Bazel will make it more cumbersome.

The biggest problem is that the Manufacturer has only included .h files and libraries for X86 and Nvidia Jetson TX2 Library which is Not working on Nvidia Jetson AGX Xavier , there is no source , i am in communication with them to get their .cpp files, i want to run this on Nvidia Jetson AGX Xavier.

They have provided a Jetson TX2 library, you say? What happens if you try to use this shared library? I assume that you have linking errors or runtime crashes because perhaps it was built against an older JetPack version?

Getting the source from the authors and recompiling is really the only way to go here honestly.

Hi Hemals , finally got the Source files from Manufacturer, already compiled a Aarch64 Library and Now running with ROS.

My Question is twofold

  1. Are there any leads for writing a Motor driver for Isaac SDK , this motor is like dynamixel , but bigger ?

  2. Can we write our own Gems in Isaac ?

That’s great! For 1. Yes, you can check out the sdk/packages/dynamixelpackage which should give you some ideas I hope. For 2., sure, of course you can write your own gems and components on top of the Isaac Engine. If I understood correctly, the “Developing Codelets in C++” and the Python version in documentation should be of help to you. In fact, you will likely need to for whatever solution you are developing unless it is one of the reference applications we already provide (like Carter, Kaya, etc.).