How to compile with the driveworks framework

DRIVE OS Version: 7.0.3

Issue Description: It is unclear how to compile our own programs or the sample programs.

Deat Nvidia Forum Support,

Could you point me to the documentation on how to compile the samples and our own applications with the driveworks SDK? I was not able to find much specifically for version 7.0.3, and we are currently struggling to get our buildsystem to run to crosscompile to our thor (with driveworks), or even to just compile your provided examples.

I think that we are missing some obvious step, compiling the samples and a hello world linked to your libraries, should be relatively straightforward, right?

Below, I describe what I have tried to compile both the samples and some of our own source code.


I tried to use the cmake files of the samples to compile our own source code, but even with tweaks this produces many errors. I tried to compile just the samples in the docker container as described in the documentation for driveworks SDK 6.0.10 but it did not work (see below).

Trying to just compile samples like the 6.0.10 documentation said

root@7.0.3.0-0010-linux-nsr:~# mkdir -p /home/nvidia/build-x86_64-linux-gnu
root@7.0.3.0-0010-linux-nsr:~# cmake -B /home/nvidia/build-x86_64-linux-gnu -S /usr/local/driveworks/samples
-- Building GLFW for X11 (static)
-- **** Samples will be installed to `/home/nvidia/build-x86_64-linux-gnu/install/usr/local/driveworks/samples/bin' on the host filesystem. ****
-- Configuring done (0.1s)
CMake Warning (dev) at src/framework/CMakeLists.txt:220 (target_link_libraries):
  The library that is being linked to, dwdynamicmemory, is marked as being
  deprecated by the owner.  The message provided by the developer is:

  The imported target "dwdynamicmemory" is deprecated, please use the
  imported target "dwdynamicmemory::dwdynamicmemory" instead.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/framework/CMakeLists.txt:220 (target_link_libraries):
  The library that is being linked to, dwdynamicmemory, is marked as being
  deprecated by the owner.  The message provided by the developer is:

  The imported target "dwdynamicmemory" is deprecated, please use the
  imported target "dwdynamicmemory::dwdynamicmemory" instead.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at src/dnn/sample_dnn_plugin/CMakeLists.txt:40 (add_library):
  Cannot find source file:

    MaxPoolPlugin.cpp

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm
  .ccm .cxxm .c++m .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90
  .f95 .f03 .hip .ispc


CMake Warning (dev) at src/framework/CMakeLists.txt:220 (target_link_libraries):
  The library that is being linked to, dwdynamicmemory, is marked as being
  deprecated by the owner.  The message provided by the developer is:

  The imported target "dwdynamicmemory" is deprecated, please use the
  imported target "dwdynamicmemory::dwdynamicmemory" instead.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/framework/CMakeLists.txt:220 (target_link_libraries):
  The library that is being linked to, dwdynamicmemory, is marked as being
  deprecated by the owner.  The message provided by the developer is:

  The imported target "dwdynamicmemory" is deprecated, please use the
  imported target "dwdynamicmemory::dwdynamicmemory" instead.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/framework/CMakeLists.txt:220 (target_link_libraries):
  The library that is being linked to, dwdynamicmemory, is marked as being
  deprecated by the owner.  The message provided by the developer is:

  The imported target "dwdynamicmemory" is deprecated, please use the
  imported target "dwdynamicmemory::dwdynamicmemory" instead.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/framework/CMakeLists.txt:220 (target_link_libraries):
  The library that is being linked to, dwdynamicmemory, is marked as being
  deprecated by the owner.  The message provided by the developer is:

  The imported target "dwdynamicmemory" is deprecated, please use the
  imported target "dwdynamicmemory::dwdynamicmemory" instead.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at src/framework/CMakeLists.txt:220 (target_link_libraries):
  The library that is being linked to, dwdynamicmemory, is marked as being
  deprecated by the owner.  The message provided by the developer is:

  The imported target "dwdynamicmemory" is deprecated, please use the
  imported target "dwdynamicmemory::dwdynamicmemory" instead.

This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) in src/imageprocessing/stereo/CMakeLists.txt:
  Policy CMP0104 is not set: CMAKE_CUDA_ARCHITECTURES now detected for NVCC,
  empty CUDA_ARCHITECTURES not allowed.  Run "cmake --help-policy CMP0104"
  for policy details.  Use the cmake_policy command to set the policy and
  suppress this warning.

  CUDA_ARCHITECTURES is empty for target "sample_stereo_disparity".
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) in src/image/image_common/CMakeLists.txt:
  Policy CMP0104 is not set: CMAKE_CUDA_ARCHITECTURES now detected for NVCC,
  empty CUDA_ARCHITECTURES not allowed.  Run "cmake --help-policy CMP0104"
  for policy details.  Use the cmake_policy command to set the policy and
  suppress this warning.

  CUDA_ARCHITECTURES is empty for target "dw_samples_image_common".
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done (0.2s)
CMake Generate step failed.  Build files cannot be regenerated correctly.


Trying to make our own builds (not compiling samples but our own code) also did not work, even after trying to modify a lot. The furthest we came produces an error like the below, but I was unable to locate libdw_allocator.so and libdw_framework.so.

[  2%] Built target uvgrtp_version
[ 91%] Built target uvgrtp
[ 93%] Linking CXX executable ntvdu
/opt/nvidia/nvidia_sdk/DRIVE_OS_7.0.3_SDK_Linux_DRIVE_AGX_THOR_DEVKITS/DRIVEOS/toolchains/aarch64--glibc--stable-2022.03-1/bin/../lib/gcc/aarch64-buildro
ot-linux-gnu/9.3.0/../../../../aarch64-buildroot-linux-gnu/bin/ld: cannot find -ldw_framework
/opt/nvidia/nvidia_sdk/DRIVE_OS_7.0.3_SDK_Linux_DRIVE_AGX_THOR_DEVKITS/DRIVEOS/toolchains/aarch64--glibc--stable-2022.03-1/bin/../lib/gcc/aarch64-buildro
ot-linux-gnu/9.3.0/../../../../aarch64-buildroot-linux-gnu/bin/ld: cannot find -ldw_allocator
collect2: error: ld returned 1 exit status
make[2]: *** [src/ntvdu/CMakeFiles/ntvdu.dir/build.make:149: src/ntvdu/ntvdu] Error 1
make[1]: *** [CMakeFiles/Makefile2:171: src/ntvdu/CMakeFiles/ntvdu.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Dear @christoph.scherr ,
It is a known issue in DOS 7.0.3. Can you cross compile the samples and copy the binaries to run on target?
For cross compilation you can use

mkdir /home/nvidia/DW-cross
cmake -B /home/nvidia/DW-cross -DCMAKE_TOOLCHAIN_FILE=/usr/local/driveworks/samples/cmake/Toolchain-V5L.cmake   -S /usr/local/driveworks/samples
cd /home/nvidia/DW-cross
make

Copy the DW binary(like /home/nvidia/DW-cross/src/hello_world/sample_hello_world) to target to run the sample.

Please see related topic Building and executing driveworks samples in DriveOS 7.0.3 docker container fails for details

Thanks for the quick reply. I was able to cross-compile the samples that way. I will now look into adapting the sample’s build system to compile our own application. I will update you if there are any difficulties there.

Dear @christoph.scherr ,
Thank you for confirmation. Please file a new topic with error details and changes you made in case you hit any issue.