How to generate libargussampleutils.so from Argus Utils folder

Hi all,

Environnement :
Jetpack : 4.5.1
Board : NVIDIA Jetson AGX Xavier
LibArgus version : 0.97.3
Camera : Custom MIPI CSI 2 Camera

I’m developing a custom application in amd64 PC using LibAgus, and then i cross compile this latter for arm64 (Jetson) to be able to use my app with LibArgus in the Jetson.

In my custom app i want to use the sources files of the following path :
/home/jetson/jetson_multimedia_api/argus/samples/utils

So there is the step i did :
1. I’ve changed the Cmakelist.txt to be able to generate .so output file

Update usr\src\jetson_multimedia_api\argus\samples\utils\CMakeLists.txt



else(CUDA_FOUND)
add_library(${PROJECT_NAME} STATIC ${SOURCES})
endif(CUDA_FOUND)



----->



else(CUDA_FOUND)
add_library(${PROJECT_NAME} SHARED ${SOURCES})
endif(CUDA_FOUND)

2. I add thr lines below in the cmakelist so i will be able to find Argus

find_path(ARGUS_INCLUDE_DIR Argus/Argus.h HINTS "/usr/src/jetson_multimedia_api/argus/include")
set(CMAKE_MODULE_PATH "/usr/src/jetson_multimedia_api/argus/cmake" "${CMAKE_MODULE_PATH}")
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
find_package(Argus REQUIRED)
include_directories(
SYSTEM ${ARGUS_INCLUDE_DIR}
)

3. Compile in release mode

// Create build and install directory
mkdir buildrelease
mkdir installrelease
cd buildrelease



// Compile in release mode and shared library
cmake .. -DCMAKE_INSTALL_PREFIX=/home/jetson/jetson_multimedia_api/argus/samples/utils/installrelease -DCMAKE_BUILD_TYPE=Release
make install

After executing make install i had the following output in fact there is no the rule install:in the Makefile

make: *** No rule to make target 'install'.  Stop.

Can you please provide a guide to be able to get the file libargussampleutils.so ?

Hi,
Please refer to the steps in
Jetson Linux API Reference: Setting Up Cross-Platform Support

It is to clone the system image of Jetson platform and mount to the host PC. Please make sure required packages are installed before cloning the image.

Hi @DaneLLL,

Can i skip the first step if the the jetson board is already flashed ? If not where can i get the roofts for Jetson AGX Xavier jetpack 4.5.1 ?

1. Clone the target rootfs on your Jetson board to your host system.

hello chakibdace,

had you complete the environment setup on your Jetson board? are you able to build samples natively without issues on your Jetson board?
it’s using the host machine to clone the image of your target, please following this session, To clone a Jetson device and flash, to clone the source device’s APP partition into image file.

Hi @JerryChang

I am able to build all the samples from jetson_multimedia_api like 09_camera_jpeg_capture and 10_camera_recording, but i’ve done that using the SDKManager, is it mandatory to flash the jetson by following To clone a Jetson device and flash to be able to cross compile LibArgus samples ?

Thank you

hello chakibdace,

this command, $ sudo ./flash.sh -r -k APP -G <clone> <board> mmcblk0p1 it won’t flash the target, instead, it reads the APP partition, create a copy, and writes system image to your host machine.

Thanks for your fast answer @JerryChang

After creating a copy and writting system image on my host machine, can i go directly to the second step ?

2. Mount the .raw image with the following commands:

Thanks

hello chakibdace,

yes, you should be able to set up the cross-compilation environment with that system image.

@JerryChang

I’m using a Jetson AGX Xavier 32 Go so the value of board should be jetson-agx-xavier-devkit, but what about the clone value, is it the system.img, or another image file in the filesystem partition ?

$ sudo ./flash.sh -r -k APP -G system.img jetson-agx-xavier-devkit mmcblk0p

There is all the img a i have in Jetpack folder

./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/nv_tegra/LICENSE.l4t-usb-device-mode-filesystem.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs-bk-orig/opt/nvidia/l4t-usb-device-mode/LICENSE.filesystem.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs-bk-orig/opt/nvidia/l4t-usb-device-mode/filesystem.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs-bk-orig/rootfs/opt/nvidia/l4t-usb-device-mode/LICENSE.filesystem.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs-bk-orig/rootfs/opt/nvidia/l4t-usb-device-mode/filesystem.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs-bk-orig/rootfs/lib/firmware/RTL8192E/data.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs-bk-orig/rootfs/lib/firmware/RTL8192E/boot.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs-bk-orig/rootfs/lib/firmware/RTL8192E/main.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs-bk-orig/lib/firmware/RTL8192E/data.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs-bk-orig/lib/firmware/RTL8192E/boot.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs-bk-orig/lib/firmware/RTL8192E/main.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs/opt/nvidia/l4t-usb-device-mode/LICENSE.filesystem.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs/opt/nvidia/l4t-usb-device-mode/filesystem.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs/lib/firmware/RTL8192E/data.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs/lib/firmware/RTL8192E/boot.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/rootfs/lib/firmware/RTL8192E/main.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/tos.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/tos-mon-only.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/tos_t194.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/boot.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/system.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/camera-rtcpu-rce.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/recovery.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/tos-trusty_t194.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/l4t_initrd.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/tos-trusty.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/eks.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/camera-rtcpu-sce.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/tos-mon-only_t194.img
./nvidia/nvidia_sdk/JetPack_4.5.1_Linux_JETSON_AGX_XAVIER/Linux_for_Tegra/bootloader/temp_user_dir/boot.img

Thanks for your support

hello chakibdace,

it’s only file naming, suggest having different naming as system.img since it’s the default rootfs.

HI @JerryChang

There is all the folders of the root filesystem :

ubuntudev@linux:/$ ls
bin  boot  cdrom  dev  etc  home  initrd.img  initrd.img.old  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  sys  tmp  usr  var  vmlinuz

Can you please tell me where can i find the files i’m supposed to clone ?

Thank you for your support

Hi all,

I could generate the libargussampleutils.so without doing a cross compilation but directly by compailing the library following the steps below :

/home/jetson/jetson_multimedia_api/argus/samples/utils

So there is the step i did :
1. I’ve changed the Cmakelist.txt to be able to generate .so output file

Update usr\src\jetson_multimedia_api\argus\samples\utils\CMakeLists.txt



else(CUDA_FOUND)
add_library(${PROJECT_NAME} STATIC ${SOURCES})
endif(CUDA_FOUND)



----->



else(CUDA_FOUND)
add_library(${PROJECT_NAME} SHARED ${SOURCES})
endif(CUDA_FOUND)

2. I add thr lines below in the cmakelist so i will be able to find Argus

find_path(ARGUS_INCLUDE_DIR Argus/Argus.h HINTS "/usr/src/jetson_multimedia_api/argus/include")
set(CMAKE_MODULE_PATH "/usr/src/jetson_multimedia_api/argus/cmake" "${CMAKE_MODULE_PATH}")
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
find_package(Argus REQUIRED)
include_directories(
SYSTEM ${ARGUS_INCLUDE_DIR}
)

3. Compile in release mode

// Create build and install directory
mkdir buildrelease
mkdir installrelease
cd buildrelease



// Compile in release mode and shared library
cmake .. -DCMAKE_INSTALL_PREFIX=/home/jetson/jetson_multimedia_api/argus/samples/utils/installrelease -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON
make

I just forgot to add the flag -DBUILD_SHARED_LIBS=ON

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.