Error while makeing Jetson Nano Object recognition C/C++ Example

I’m learning object recognition example from
https://github.com/dusty-nv/jetson-inference/blob/master/docs/imagenet-example-2.md
In step make file step, it keep error like this

leloc@ubuntu:~/my-recognition$ make
[ 50%] Linking CXX executable my-recognition
/usr/bin/ld: cannot find -lnvbuf_utils
collect2: error: ld returned 1 exit status
CMakeFiles/my-recognition.dir/build.make:101: recipe for target 'my-recognition' failed
make[2]: *** [my-recognition] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/my-recognition.dir/all' failed
make[1]: *** [CMakeFiles/my-recognition.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

What I do is exactly follow tutorial on github, could anyone know how to fix it?

This thread might be helpful.

1 Like

Hi,

May I know how do you set up your device?
Do you install all the required components from JetPack?

Thanks.

1 Like

Hi AastaLLL,
I followed the setup in this tutorial
https://github.com/dusty-nv/jetson-inference/blob/master/docs/building-repo-2.md

$ sudo apt-get update
$ sudo apt-get install git cmake libpython3-dev python3-numpy
$ git clone --recursive https://github.com/dusty-nv/jetson-inference
$ cd jetson-inference
$ mkdir build
$ cd build
$ cmake ../
$ make -j$(nproc)
$ sudo make install
$ sudo ldconfig

Then, I started to make code C++ for image Recognition followed this tutorial
https://github.com/dusty-nv/jetson-inference/blob/master/docs/imagenet-example-2.md

Hi MtHiker
I don’t see tegra folder in my /usr/lib/aarch64-linux-gnu directory.

Here is my full output from cmake and make command after re-flash SD card from beginning.

loc@loc:~/my-recognition$ cmake .
qmake: could not exec '/usr/lib/aarch64-linux-gnu/qt4/bin/qmake': No such file or directory
-- Found unsuitable Qt version "" from NOTFOUND
Qt QTGUI library not found.
Qt QTCORE library not found.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/loc/my-recognition
loc@loc:~/my-recognition$ make
[ 50%] Linking CXX executable my-recognition
/usr/bin/ld: cannot find -lnvbuf_utils
collect2: error: ld returned 1 exit status
CMakeFiles/my-recognition.dir/build.make:101: recipe for target 'my-recognition' failed
make[2]: *** [my-recognition] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/my-recognition.dir/all' failed
make[1]: *** [CMakeFiles/my-recognition.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Here is my CMakeLists.txt

# require CMake 2.8 or greater
cmake_minimum_required(VERSION 2.8)

# declare my-recognition project
project(my-recognition)

# import jetson-inference and jetson-utils packages.
# note that if you didn't do "sudo make install"
# while building jetson-inference, this will error.
find_package(jetson-utils)
find_package(jetson-inference)

# CUDA and Qt4 are required
find_package(CUDA)
find_package(Qt4)

# setup Qt4 for build
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})

# compile the my-recognition program
cuda_add_executable(my-recognition my-recognition.cpp)

# link my-recognition to jetson-inference library
target_link_libraries(my-recognition jetson-inference)

# add lnvbuf-utils to project
link_directories(/usr/lib/aarch64-linux-gnu/tegra)

I have tried your solution and here is my CMakeLists.txt file’s content:

# require CMake 2.8 or greater
cmake_minimum_required(VERSION 2.8)

# declare my-recognition project
project(my-recognition)

# import jetson-inference and jetson-utils packages.
# note that if you didn't do "sudo make install"
# while building jetson-inference, this will error.
find_package(jetson-utils)
find_package(jetson-inference)

# CUDA and Qt4 are required
find_package(CUDA)
find_package(Qt4)

# setup Qt4 for build
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})

# compile the my-recognition program
cuda_add_executable(my-recognition my-recognition.cpp)

# link my-recognition to jetson-inference library
target_link_libraries(my-recognition jetson-inference)

# add lnvbuf-utils to project
link_directories(/usr/lib/aarch64-linux-gnu/tegra)

It’s still not working

Thanks a lot MtHiker,
It’s worked.
What I forgot is to put link_directories(/usr/lib/aarch64-linux-gnu/tegra) line before adding other packages.
Which mean I put link_directories before find_package(jetson-utils) and find_package(jetson-inference).

# require CMake 2.8 or greater
cmake_minimum_required(VERSION 2.8)

# declare my-recognition project
project(my-recognition)


# add lnvbuf-utils to program
link_directories (/usr/lib/aarch64-linux-gnu/tegra)
# import jetson-inference and jetson-utils packages.
# note that if you didn't do "sudo make install"
# while building jetson-inference, this will error.
find_package(jetson-utils)
find_package(jetson-inference)

# CUDA and Qt4 are required
find_package(CUDA)
find_package(Qt4)

# setup Qt4 for build
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})

# compile the my-recognition program
cuda_add_executable(my-recognition my-recognition.cpp)

# link my-recognition to jetson-inference library
target_link_libraries(my-recognition jetson-inference)

Hi @vision-hobbist1995, thanks for pointing this out - I had forgotten to add this after doing the updates to use NVMM memory and libnvbuf-utils. I just added this fix to the repo in commit 1b8383.

2 Likes

I did it from the fresh TX2 dev kit, and found out everything works well.

1 Like

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