Hi everyone,
We’re trying to perform cross-compilation for our cpp code, we aim to create a tensorrt .engine file from a uff model.
In order to compile our code, we are using the cmake file for the SDK samples, we have added our source files to a new folder inside the sample folders and edited the cmake files to compile it as well.
We are compiling using these commands (as specified in the SDK samples README file):
$ sudo cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/usr/local/driveworks/samples/cmake/Toolchain-V4L.cmake -DVIBRANTE_PDK:STRING=/home/cellaerometer/NVIDIA/Drive/5050bL_SDK/DriveSDK/drive-t186ref-linux /usr/local/driveworks/samples
– VIBRANTE_PDK = /home/cellaerometer/NVIDIA/Drive/5050bL_SDK/DriveSDK/drive-t186ref-linux
$ sudo make -j
The problem seems to be that the libraries specified in the cmake don’t include the implementations for the following function:
createInferBuilder_INTERNAL
This is the error:
/home/cellaerometer/NVIDIA/Drive/5050bL_SDK/DriveSDK/toolchains/tegra-4.9-nv/usr/bin/aarch64-gnu-linux/…/…/libexec/aarch64-gnu-linux/gcc/aarch64-gnu-linux/4.9.2/ld: CMakeFiles/pilotnet_inference.dir/PilotnetTRT.cpp.o: undefined reference to symbol ‘createInferBuilder_INTERNAL’
We have tried to somehow include the libnvinfer.so file, since we thought it might sort this out, but we get errors when trying to include it in the cmake.
Specs:
Ubuntu 16.04
Cuda 9.0
cudnn 7.0.4
g++ 5.4.0
Cross-compilation for Drive PX-2 Autochauffer, aarch64-linux
Could you help us with figuring this out?
Thanks
Hello,
I have the same problem with: undefined reference to symbol ‘createInferBuilder_INTERNAL’
Did you find any solution for this problem?
Thanks!
Similar issue, any update?
you have a linker error. createInferBuilder_INTERNAL should be defined in libnvinfer.so, so you need to link against the nvinfer libraries.
Not to awaken a sleeping topic, but I have linked it. See CMake output:
-- Found CUDNN: /usr/lib/x86_64-linux-gnu/libcudnn.so
-- Found CUDNN include: /usr/include
-- Found NVINFER: /usr/lib/x86_64-linux-gnu/libnvinfer.so
-- Found NVINFER include: /usr/include/x86_64-linux-gnu
install dir:/home/oren/Projects/AirSim/ros2/install/cinematography
/usr/bin/ld: warning: libopencv_imgcodecs.so.3.2, needed by /opt/ros/dashing/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.4.5
/usr/bin/ld: warning: libopencv_imgproc.so.3.2, needed by /opt/ros/dashing/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.4.5
/usr/bin/ld: warning: libopencv_core.so.3.2, needed by /opt/ros/dashing/lib/libcv_bridge.so, may conflict with libopencv_core.so.4.5
CMakeFiles/heading_estimation.dir/src/heading_estimation.cpp.o: In function `nvinfer1::(anonymous namespace)::createInferRuntime(nvinfer1::ILogger&)':
/usr/include/x86_64-linux-gnu/NvInferRuntime.h:1906: undefined reference to `createInferRuntime_INTERNAL'
collect2: error: ld returned 1 exit status
My cmake script has found it, and I’ve linked it in the appropriate executable here:
add_executable(heading_estimation src/heading_estimation.cpp)
ament_target_dependencies(heading_estimation rclcpp cinematography_msgs sensor_msgs geometry_msgs nav_msgs cv_bridge tf2_geometry_msgs)
target_link_libraries(heading_estimation ioHelper ${CUDA_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES} ${CUDNN_LIBRARIES} ${OpenCV_LIBS} ${NVINFER_LIBRARIES})
But I still get the undefined reference error. Why?
Using TensorRT 7.1.3
Hi Oren,
Are you able to show the exact build commands that are run? Eg, if you’re using make
, you could use make VERBOSE=1
, or if you’re using ninja
you could use ninja -v
. There may be able to do this in a build system independent way through cmake :)
Cheers,
Tom
(Using colcon, a cmake wrapper). The output is a lot because it’s a big project, but the relevant command on the relevant executable is:
/usr/bin/g++-8 -DOPENCV -g CMakeFiles/heading_estimation.dir/src/heading_estimation.cpp.o -o heading_estimation -L/usr/local/cuda/lib64 -Wl,-rpath,/usr/local/cuda/lib64:/opt/ros/dashing/lib:/home/oren/Projects/AirSim/ros2/install/cinematography_msgs/lib:/home/oren/Projects/AirSim/ros2/build/cinematography:/usr/local/lib: /opt/ros/dashing/lib/libtrajectory_msgs__rosidl_generator_c.so /opt/ros/dashing/lib/libtrajectory_msgs__rosidl_typesupport_c.so /opt/ros/dashing/lib/libtrajectory_msgs__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/libtrajectory_msgs__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/libtrajectory_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/libtrajectory_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/libtrajectory_msgs__rosidl_typesupport_fastrtps_cpp.so /home/oren/Projects/AirSim/ros2/install/cinematography_msgs/lib/libcinematography_msgs__rosidl_generator_c.so /home/oren/Projects/AirSim/ros2/install/cinematography_msgs/lib/libcinematography_msgs__rosidl_typesupport_c.so /home/oren/Projects/AirSim/ros2/install/cinematography_msgs/lib/libcinematography_msgs__rosidl_typesupport_cpp.so /home/oren/Projects/AirSim/ros2/install/cinematography_msgs/lib/libcinematography_msgs__rosidl_typesupport_introspection_c.so /home/oren/Projects/AirSim/ros2/install/cinematography_msgs/lib/libcinematography_msgs__rosidl_typesupport_introspection_cpp.so /home/oren/Projects/AirSim/ros2/install/cinematography_msgs/lib/libcinematography_msgs__rosidl_typesupport_fastrtps_c.so /home/oren/Projects/AirSim/ros2/install/cinematography_msgs/lib/libcinematography_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/libsensor_msgs__rosidl_generator_c.so /opt/ros/dashing/lib/libsensor_msgs__rosidl_typesupport_c.so /opt/ros/dashing/lib/libsensor_msgs__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/libsensor_msgs__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/libsensor_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/libsensor_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/libsensor_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/libnav_msgs__rosidl_generator_c.so /opt/ros/dashing/lib/libnav_msgs__rosidl_typesupport_c.so /opt/ros/dashing/lib/libnav_msgs__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/libnav_msgs__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/libnav_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/libnav_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/libnav_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/libcv_bridge.so /opt/ros/dashing/lib/liborocos-kdl.so.1.4.0 /opt/ros/dashing/lib/libtf2_ros.so /opt/ros/dashing/lib/libmessage_filters.so /opt/ros/dashing/lib/librclcpp.so /opt/ros/dashing/lib/librcl.so /opt/ros/dashing/lib/librcl_interfaces__rosidl_typesupport_c.so /opt/ros/dashing/lib/librcl_interfaces__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/librcl_interfaces__rosidl_generator_c.so /opt/ros/dashing/lib/librcl_interfaces__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/librcl_interfaces__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/librcl_interfaces__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/librcl_interfaces__rosidl_typesupport_introspection_cpp.so -lpthread /opt/ros/dashing/lib/librmw_implementation.so /opt/ros/dashing/lib/librmw.so /opt/ros/dashing/lib/librcutils.so /opt/ros/dashing/lib/librcl_logging_noop.so /opt/ros/dashing/lib/librosgraph_msgs__rosidl_generator_c.so /opt/ros/dashing/lib/librosgraph_msgs__rosidl_typesupport_c.so /opt/ros/dashing/lib/librosgraph_msgs__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/librosgraph_msgs__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/librosgraph_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/librosgraph_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/librosgraph_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/librcl_yaml_param_parser.so /opt/ros/dashing/lib/libstd_msgs__rosidl_generator_c.so /opt/ros/dashing/lib/libstd_msgs__rosidl_typesupport_c.so /opt/ros/dashing/lib/libstd_msgs__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/libstd_msgs__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/libstd_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/libstd_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/libstd_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/libgeometry_msgs__rosidl_typesupport_c.so /opt/ros/dashing/lib/libgeometry_msgs__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/libgeometry_msgs__rosidl_generator_c.so /opt/ros/dashing/lib/libgeometry_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/libgeometry_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/libgeometry_msgs__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/libgeometry_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/libbuiltin_interfaces__rosidl_typesupport_c.so /opt/ros/dashing/lib/libbuiltin_interfaces__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/libbuiltin_interfaces__rosidl_generator_c.so /opt/ros/dashing/lib/libbuiltin_interfaces__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/libbuiltin_interfaces__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/libbuiltin_interfaces__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/libbuiltin_interfaces__rosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/libunique_identifier_msgs__rosidl_typesupport_c.so /opt/ros/dashing/lib/libunique_identifier_msgs__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/libunique_identifier_msgs__rosidl_generator_c.so /opt/ros/dashing/lib/libunique_identifier_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/libunique_identifier_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/libunique_identifier_msgs__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/libunique_identifier_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/librosidl_typesupport_c.so /opt/ros/dashing/lib/librosidl_typesupport_cpp.so /opt/ros/dashing/lib/librosidl_generator_c.so /opt/ros/dashing/lib/librosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/librosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/libaction_msgs__rosidl_generator_c.so /opt/ros/dashing/lib/libaction_msgs__rosidl_typesupport_c.so /opt/ros/dashing/lib/libaction_msgs__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/libaction_msgs__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/libaction_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/libaction_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/libaction_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/libtf2_msgs__rosidl_typesupport_c.so /opt/ros/dashing/lib/libtf2_msgs__rosidl_typesupport_cpp.so /opt/ros/dashing/lib/libtf2_msgs__rosidl_generator_c.so /opt/ros/dashing/lib/libtf2_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/dashing/lib/libtf2_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/dashing/lib/libtf2_msgs__rosidl_typesupport_introspection_c.so /opt/ros/dashing/lib/libtf2_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/dashing/lib/libconsole_bridge.so.0.4 /opt/ros/dashing/lib/libtf2.so libioHelper.so /usr/local/cuda/lib64/libcudart_static.a -ldl /usr/lib/x86_64-linux-gnu/librt.so /usr/local/cuda/lib64/libcublas.so /usr/local/lib/libopencv_gapi.so.4.5.1 /usr/local/lib/libopencv_stitching.so.4.5.1 /usr/local/lib/libopencv_alphamat.so.4.5.1 /usr/local/lib/libopencv_aruco.so.4.5.1 /usr/local/lib/libopencv_bgsegm.so.4.5.1 /usr/local/lib/libopencv_bioinspired.so.4.5.1 /usr/local/lib/libopencv_ccalib.so.4.5.1 /usr/local/lib/libopencv_cudabgsegm.so.4.5.1 /usr/local/lib/libopencv_cudafeatures2d.so.4.5.1 /usr/local/lib/libopencv_cudaobjdetect.so.4.5.1 /usr/local/lib/libopencv_cudastereo.so.4.5.1 /usr/local/lib/libopencv_dnn_objdetect.so.4.5.1 /usr/local/lib/libopencv_dnn_superres.so.4.5.1 /usr/local/lib/libopencv_dpm.so.4.5.1 /usr/local/lib/libopencv_face.so.4.5.1 /usr/local/lib/libopencv_freetype.so.4.5.1 /usr/local/lib/libopencv_fuzzy.so.4.5.1 /usr/local/lib/libopencv_hdf.so.4.5.1 /usr/local/lib/libopencv_hfs.so.4.5.1 /usr/local/lib/libopencv_img_hash.so.4.5.1 /usr/local/lib/libopencv_intensity_transform.so.4.5.1 /usr/local/lib/libopencv_line_descriptor.so.4.5.1 /usr/local/lib/libopencv_mcc.so.4.5.1 /usr/local/lib/libopencv_quality.so.4.5.1 /usr/local/lib/libopencv_rapid.so.4.5.1 /usr/local/lib/libopencv_reg.so.4.5.1 /usr/local/lib/libopencv_rgbd.so.4.5.1 /usr/local/lib/libopencv_saliency.so.4.5.1 /usr/local/lib/libopencv_sfm.so.4.5.1 /usr/local/lib/libopencv_stereo.so.4.5.1 /usr/local/lib/libopencv_structured_light.so.4.5.1 /usr/local/lib/libopencv_superres.so.4.5.1 /usr/local/lib/libopencv_surface_matching.so.4.5.1 /usr/local/lib/libopencv_tracking.so.4.5.1 /usr/local/lib/libopencv_videostab.so.4.5.1 /usr/local/lib/libopencv_viz.so.4.5.1 /usr/local/lib/libopencv_xfeatures2d.so.4.5.1 /usr/local/lib/libopencv_xobjdetect.so.4.5.1 /usr/local/lib/libopencv_xphoto.so.4.5.1 /usr/local/lib/libopencv_phase_unwrapping.so.4.5.1 /usr/local/lib/libopencv_cudacodec.so.4.5.1 /usr/local/lib/libopencv_highgui.so.4.5.1 /usr/local/lib/libopencv_datasets.so.4.5.1 /usr/local/lib/libopencv_plot.so.4.5.1 /usr/local/lib/libopencv_text.so.4.5.1 /usr/local/lib/libopencv_videoio.so.4.5.1 /usr/local/lib/libopencv_cudaoptflow.so.4.5.1 /usr/local/lib/libopencv_cudalegacy.so.4.5.1 /usr/local/lib/libopencv_cudawarping.so.4.5.1 /usr/local/lib/libopencv_optflow.so.4.5.1 /usr/local/lib/libopencv_ml.so.4.5.1 /usr/local/lib/libopencv_shape.so.4.5.1 /usr/local/lib/libopencv_ximgproc.so.4.5.1 /usr/local/lib/libopencv_video.so.4.5.1 /usr/local/lib/libopencv_dnn.so.4.5.1 /usr/local/lib/libopencv_imgcodecs.so.4.5.1 /usr/local/lib/libopencv_objdetect.so.4.5.1 /usr/local/lib/libopencv_calib3d.so.4.5.1 /usr/local/lib/libopencv_features2d.so.4.5.1 /usr/local/lib/libopencv_flann.so.4.5.1 /usr/local/lib/libopencv_photo.so.4.5.1 /usr/local/lib/libopencv_cudaimgproc.so.4.5.1 /usr/local/lib/libopencv_cudafilters.so.4.5.1 /usr/local/lib/libopencv_imgproc.so.4.5.1 /usr/local/lib/libopencv_cudaarithm.so.4.5.1 /usr/local/lib/libopencv_core.so.4.5.1 /usr/local/lib/libopencv_cudev.so.4.5.1 -lpthread -ldl /usr/lib/x86_64-linux-gnu/librt.so /usr/local/cuda/lib64/libcublas.so
/usr/bin/g++-8 -std=c++17 -ggdb -Wall -Wextra -Wstrict-aliasing -Wunreachable-code -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-include-dirs -Wswitch-default -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wstrict-overflow=5 -Wswitch-default -Wundef -Wno-variadic-macros -Wno-parentheses -Wno-unused-function -Wno-unused -fdiagnostics-show-option -pthread -D MSGPACK_PP_VARIADICS_MSVC=0 -g -rdynamic CMakeFiles/MavLinkTest.dir/home/oren/Projects/AirSim/MavLinkCom/MavLinkTest/Commands.cpp.o CMakeFiles/MavLinkTest.dir/home/oren/Projects/AirSim/MavLinkCom/MavLinkTest/UnitTests.cpp.o CMakeFiles/MavLinkTest.dir/home/oren/Projects/AirSim/MavLinkCom/MavLinkTest/main.cpp.o -o ../../output/bin/MavLinkTest -lpthread ../../output/lib/libMavLinkCom.a -lstdc++fs -fmax-errors=10 -Wnoexcept -Wstrict-null-sentinel -lpthread
Note, I have built similar successfully built code that also has a createInferBuilder call in it, but that was built with a conventional makefile.
Hi Oren,
I grepped nvinfer in your build step there, and I don’t see it linked. Maybe message
NVINFER_LIBRARIES
in your cmakelists and see what it gives you. The variable you might want may be TensorRT_LIBRARIES
Both of those are undefined
It was NVINFER_LIBRARY. Singular
For those who don’t want to read the whole thread, the cmake solution is to add this line:
target_link_libraries(executable_name ${NVINFER_LIBRARY})
1 Like