下位机编译 libv4l2_nvargus 代码出错

Jetson 模组
Jetson AGX Orin
Jetson Orin NX
Jetson Orin Nano
Jetson AGX Xavier
Jetson Xavier NX
Jetson TX 系列
Jetson Nano

Jetson 软件

JetPack 5.1.2

SDK Manager 管理工具版本
2.1.0
其他

源代码出处

cd /home/yz/nvidia/nvidia_sdk/JetPack_5.1.2_Linux_JETSON_ORIN_NX_TARGETS/Linux_for_Tegra
./source_sync.sh -d /home/yz/src -t jetson_35.4.1

问题描述
下位机编译libv4l2_nvargus 组件代码报错,报错如下:

make -j6
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o libv4l2_nvargus.o libv4l2_nvargus.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2.o nvargusv4l2.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_context.o nvargusv4l2_context.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_ioctl.o nvargusv4l2_ioctl.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_argus.o nvargusv4l2_argus.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_os.o nvargusv4l2_os.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_nvqueue.o nvargusv4l2_nvqueue.cpp
Linking: libv4l2_nvargus.so
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/nvmmapi/NvNativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples14NvNativeBufferE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/nvmmapi/NvNativeBuffer.o: in function `ArgusSamples::NvNativeBuffer::NvNativeBuffer(Argus::Size2D<unsigned int> const&)':
NvNativeBuffer.cpp:(.text+0x1c): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/nvmmapi/NvNativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples14NvNativeBufferE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/nvmmapi/NvNativeBuffer.o: in function `ArgusSamples::NvNativeBuffer::~NvNativeBuffer()':
NvNativeBuffer.cpp:(.text+0x64): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples6ThreadE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: in function `ArgusSamples::Thread::Thread()':
Thread.cpp:(.text+0xc): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples6ThreadE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: in function `ArgusSamples::Thread::~Thread()':
Thread.cpp:(.text+0x5c): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZN12ArgusSamples6Thread18threadFunctionStubEPv' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: in function `ArgusSamples::Thread::initialize()':
Thread.cpp:(.text+0xd4): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples12NativeBufferE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: in function `ArgusSamples::NativeBuffer::NativeBuffer(Argus::Size2D<unsigned int> const&)':
NativeBuffer.cpp:(.text+0x18): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples12NativeBufferE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: in function `ArgusSamples::NativeBuffer::~NativeBuffer()':
NativeBuffer.cpp:(.text+0x50): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples15IEGLImageSourceE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: in function `ArgusSamples::IEGLImageSource::~IEGLImageSource()':
NativeBuffer.cpp:(.text._ZN12ArgusSamples15IEGLImageSourceD2Ev[_ZN12ArgusSamples15IEGLImageSourceD5Ev]+0x8): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples15IEGLImageSourceE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: in function `ArgusSamples::IEGLImageSource::IEGLImageSource()':
NativeBuffer.cpp:(.text._ZN12ArgusSamples15IEGLImageSourceC2Ev[_ZN12ArgusSamples15IEGLImageSourceC5Ev]+0x8): dangerous relocation: unsupported relocation
collect2: error: ld returned 1 exit status
make: *** [Makefile:117: libv4l2_nvargus.so] Error 1

请问下这个问题有人遇到过么,如何解决

Hi,

尝试加参数 -Xcompiler -fPIC 重新编译试试?

你好,-Xcompiler 是针对 nvcc的编译选项,请帮忙看看,目前应该不支持 -Xcompiler 参数
下面的makefile文件位置如下:

yz@yz-desktop:~/nfs/tegra/tegra/v4l2-src/libv4l2_nvargus/libv4l2_nvargus$ tree
.
├── inc
│   ├── nvargusv4l2_argus.h
│   ├── nvargusv4l2_context.h
│   ├── nvargusv4l2.h
│   ├── nvargusv4l2_ioctl.h
│   ├── nvargusv4l2_nvqueue.h
│   └── nvargusv4l2_os.h
├── libv4l2_nvargus.cpp
├── Makefile
├── nvargusv4l2_argus.cpp
├── nvargusv4l2_context.cpp
├── nvargusv4l2.cpp
├── nvargusv4l2_ioctl.cpp
├── nvargusv4l2_nvqueue.cpp
├── nvargusv4l2_os.cpp
└── README

1 directory, 15 files

Makfile代码如下

###############################################################################
#
# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
# makefile for libv4l2_nvargus library
#
###############################################################################

LIBRARY_NAME:= libv4l2_nvargus.so

# Clear the flags from env
CPPFLAGS :=
LDFLAGS :=
LIBS :=

INSTALL_DIR?=/usr/lib/aarch64-linux-gnu/tegra/
LINK_DIR?=/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/

# Verbose flag
ifeq ($(VERBOSE), 1)
AT =
else
AT = @
endif

# ARM ABI of the target platform
TEGRA_ARMABI ?= aarch64-linux-gnu

# Location of the target rootfs
ifeq ($(shell uname -m), aarch64)
TARGET_ROOTFS :=
CROSS_COMPILE :=
else
CROSS_COMPILE ?= aarch64-unknown-linux-gnu-
ifeq ($(TARGET_ROOTFS),)
$(error "TARGET_ROOTFS" is not set. Please set TARGET_ROOTFS if you are cross-compiling.)
endif
endif

ARGUS_UTILS_GTK_PATH := $(TARGET_ROOTFS)/usr/src/jetson_multimedia_api/argus/samples/utils/gtk
ARGUS_UTILS_SRC_PATH := $(TARGET_ROOTFS)/usr/src/jetson_multimedia_api/argus/samples/utils

CC             = $(AT) $(CROSS_COMPILE)gcc
CPP            = $(AT) $(CROSS_COMPILE)gcc
RM             = $(AT) $(CROSS_COMPILE)rm -f

PKGS := gtk+-3.0 \
		glx \
		glib-2.0

CPPFLAGS += \
	-I"$(TARGET_ROOTFS)/usr/include" \
	-I"$(TARGET_ROOTFS)/usr/include/$(TEGRA_ARMABI)" \
	-I"$(TARGET_ROOTFS)/usr/src/argus/include" \
	-I"$(TARGET_ROOTFS)/usr/src/jetson_multimedia_api/argus/samples/utils" \
	-I"$(TARGET_ROOTFS)/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" \
	-I"$(TARGET_ROOTFS)/usr/src/jetson_multimedia_api/include" \
	-I./inc

CPPFLAGS += \
	-pthread \
	-fno-rtti -std=gnu++14 -Wall -fPIC

CPPFLAGS += `pkg-config --cflags $(PKGS)`

LIBS += \
	-shared -lnvv4l2 -lEGL -lGLESv2 -lX11 -lpthread -Wl,--no-undefined \
	-lnvbufsurface -lnvbufsurftransform -lnvargus_socketclient -ldl -lstdc++ -lm

LDFLAGS += -L"/usr/lib" \
	-L"/usr/lib/$(TEGRA_ARMABI)/" \
	-L"/usr/lib/$(TEGRA_ARMABI)/tegra"

LIBS += `pkg-config --libs $(PKGS)`

SRCS := \
	libv4l2_nvargus.cpp \
	nvargusv4l2.cpp \
	nvargusv4l2_context.cpp \
	nvargusv4l2_ioctl.cpp \
	nvargusv4l2_argus.cpp \
	nvargusv4l2_os.cpp \
	nvargusv4l2_nvqueue.cpp \
	$(wildcard $(ARGUS_UTILS_GTK_PATH)/*.cpp) \
	$(ARGUS_UTILS_SRC_PATH)/nvmmapi/NvNativeBuffer.cpp \
	$(filter-out $(ARGUS_UTILS_SRC_PATH)/CUDAHelper.cpp, \
	$(wildcard $(ARGUS_UTILS_SRC_PATH)/*.cpp))

OBJS = $(patsubst %.cpp,%.o,$(SRCS))

all: $(LIBRARY_NAME)

.o: .cpp
	@echo "Compiling: $(CPP) $(CPPFLAGS) $<"
	$(CPP) $(CPPFLAGS) -c $<

$(LIBRARY_NAME): $(OBJS)
	@echo "Linking: $@"
	$(CPP) -o $@ $(OBJS) $(CPPFLAGS) $(LIBS) $(LDFLAGS)

.PHONY: install
install: $(LIBRARY_NAME)
	sudo cp -vp $(LIBRARY_NAME) $(INSTALL_DIR)
	sudo ln -sf $(INSTALL_DIR)$(LIBRARY_NAME) $(LINK_DIR)$(LIBRARY_NAME)

clean:
	$(RM) *.o $(LIBRARY_NAME) *~

我的目的需求是一个带-g 版本的动态库,用作gdb单步调试使用
多谢帮忙看看Makfile应该如何修改

I made some local test, and in my devkit, it works well.
May I know what changes you introduced?
I do not see any difference in logs between yours and mine.

Generally, you have to compile argus in jetson_multimedia_api first, and then compile libv4l2_nvargus.

By default, jetson_multimedia_api will be installed in /usr/src/jetson_multimedia_api/. To compile in an easy way, I use root for the full compile.

br
ChenJian

1 个赞

Thank you for your reply! Re flashing the machine to reproduce the problem is as follows:

cd  /usr/src/jetson_multimedia_api/
sudo make

There is no problem with the above operation.
when I Compile libv4l2_nvargus code as follows:

cd /home/yz/tegra/v4l2-src/libv4l2_nvargus/libv4l2_nvargus
$ sudo make -j8
[sudo] password for yz: 
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o libv4l2_nvargus.o libv4l2_nvargus.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2.o nvargusv4l2.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_context.o nvargusv4l2_context.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_ioctl.o nvargusv4l2_ioctl.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_argus.o nvargusv4l2_argus.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_os.o nvargusv4l2_os.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_nvqueue.o nvargusv4l2_nvqueue.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetson_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags gtk+-3.0 glx glib-2.0`  -c -o /usr/src/jetson_multimedia_api/argus/samples/utils/gtk/GuiElement.o /usr/src/jetson_multimedia_api/argus/samples/utils/gtk/GuiElement.cpp
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
/usr/src/jetson_multimedia_api/argus/samples/utils/gtk/GuiElement.cpp:31:10: fatal error: gtk/gtk.h: No such file or directory
   31 | #include <gtk/gtk.h>
      |          ^~~~~~~~~~~
compilation terminated.
make: *** [<builtin>: /usr/src/jetson_multimedia_api/argus/samples/utils/gtk/GuiElement.o] Error 1
make: *** Waiting for unfinished jobs....
libv4l2_nvargus.cpp:39:10: fatal error: libv4l-plugin.h: No such file or directory
   39 | #include "libv4l-plugin.h"
      |          ^~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [<builtin>: libv4l2_nvargus.o] Error 1

Then I install the lack components

sudo apt-get install gtk+-3.0
sudo apt-get install libv4l-dev
sudo make -j8
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetso                                                     n_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags                                                      gtk+-3.0 glx glib-2.0`  -c -o libv4l2_nvargus.o libv4l2_nvargus.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetso                                                     n_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags                                                      gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2.o nvargusv4l2.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetso                                                     n_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags                                                      gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_context.o nvargusv4l2_context.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetso                                                     n_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags                                                      gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_ioctl.o nvargusv4l2_ioctl.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetso                                                     n_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags                                                      gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_argus.o nvargusv4l2_argus.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetso                                                     n_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags                                                      gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_os.o nvargusv4l2_os.cpp
g++   -I"/usr/include" -I"/usr/include/aarch64-linux-gnu" -I"/usr/src/argus/include" -I"/usr/src/jetson_multimedia_api/argus/samples/utils" -I"/usr/src/jetso                                                     n_multimedia_api/argus/samples/utils/gtk" -I"/usr/src/jetson_multimedia_api/include" -I./inc -pthread -fno-rtti -std=gnu++14 -Wall -fPIC `pkg-config --cflags                                                      gtk+-3.0 glx glib-2.0`  -c -o nvargusv4l2_nvqueue.o nvargusv4l2_nvqueue.cpp
Linking: libv4l2_nvargus.so
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/nvmmapi/NvNativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusS                                                     amples14NvNativeBufferE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/nvmmapi/NvNativeBuffer.o: in function `ArgusSamples::NvNativeBuffer::NvNativeBuffer(Argus::Size2D<unsigned                                                      int> const&)':
NvNativeBuffer.cpp:(.text+0x1c): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/nvmmapi/NvNativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusS                                                     amples14NvNativeBufferE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/nvmmapi/NvNativeBuffer.o: in function `ArgusSamples::NvNativeBuffer::~NvNativeBuffer()':
NvNativeBuffer.cpp:(.text+0x64): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples6ThreadE'                                                      which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: in function `ArgusSamples::Thread::Thread()':
Thread.cpp:(.text+0xc): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples6ThreadE'                                                      which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: in function `ArgusSamples::Thread::~Thread()':
Thread.cpp:(.text+0x5c): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZN12ArgusSamples6Thread18thr                                                     eadFunctionStubEPv' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/Thread.o: in function `ArgusSamples::Thread::initialize()':
Thread.cpp:(.text+0xd4): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples12Na                                                     tiveBufferE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: in function `ArgusSamples::NativeBuffer::NativeBuffer(Argus::Size2D<unsigned int> const&)'                                                     :
NativeBuffer.cpp:(.text+0x18): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples12Na                                                     tiveBufferE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: in function `ArgusSamples::NativeBuffer::~NativeBuffer()':
NativeBuffer.cpp:(.text+0x50): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples15IE                                                     GLImageSourceE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: in function `ArgusSamples::IEGLImageSource::~IEGLImageSource()':
NativeBuffer.cpp:(.text._ZN12ArgusSamples15IEGLImageSourceD2Ev[_ZN12ArgusSamples15IEGLImageSourceD5Ev]+0x8): dangerous relocation: unsupported relocation
/usr/bin/ld: /usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN12ArgusSamples15IE                                                     GLImageSourceE' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/src/jetson_multimedia_api/argus/samples/utils/NativeBuffer.o: in function `ArgusSamples::IEGLImageSource::IEGLImageSource()':
NativeBuffer.cpp:(.text._ZN12ArgusSamples15IEGLImageSourceC2Ev[_ZN12ArgusSamples15IEGLImageSourceC5Ev]+0x8): dangerous relocation: unsupported relocation
collect2: error: ld returned 1 exit status
make: *** [Makefile:117: libv4l2_nvargus.so] Error 1

Please help take a look

I don’t know what’s wrong in your side.
I tried in my local devkit, with 35.4.1, and everything works well, by default settings.
Attach the full UART console log for your reference.

br
Chenjian

libv4l2-compile.log (289.3 KB)

1 个赞

Thank you very much!Comparing the logs, I need to perform the following supplementary operations to solve the problem:

cd  /usr/src/jetson_multimedia_api/argus
mkdir build
cd ./build
cmake ../
sudo make -j8

And pay attention the README.TXT file, need to install some components.
using sudo apt-get install libv4l-dev slove problem

fatal error: libv4l-plugin.h: No such file or directory
   39 | #include "libv4l-plugin.h"
1 个赞