TensorRT 인터페이스 봉인 성공 에너지 라이브러리에 나타나는 error

1892 단어 TensorRT
플랫폼: TX2 JetPack3.3
언어: C++
ide:Qt
오류가 발생했습니다.
참조:https://www.cnblogs.com/octave/p/4824584.html
https://www.cnblogs.com/techiel/p/8035014.html
 unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol `__stack_chk_guard@@GLIBC_2.17'
relocation R_AARCH64_ADR_PREL_PG_HI21 against external symbol `__stack_chk_guard@@GLIBC_2.17' can 
not be used when making a shared object; recompile with -fPIC

문제는 TensorRT 인터페이스를 패키지했기 때문입니다.so(동적 라이브러리) 시 동적 라이브러리는 자동으로 "-fPIC"를 가입하고 제3자를 링크해야 합니다.a (정적 라이브러리) 때, 정적 라이브러리 컴파일이 "-fPIC"에 가입하지 않으면 제3자 라이브러리를 호출할 수 없습니다.
문제는 어떻게 제3자 정적 라이브러리를 컴파일할 때 "-fPIC"를 가입합니까?
인터넷에는 많은 방법이 있다.pro 파일에 추가:
QMAKE_CFLAGS +=-fPIC

또는
QMAKE_CFLAGS    +=  -fPIC
QMAKE_CXXFLAGS  +=  -fPIC

컴파일 결과의 makefile 파일을 보면 시스템이 기본적으로 추가되었기 때문에 "-fPIC"를 추가하는 것은 아무런 작용도 하지 않습니다. 정확한 방법은 "-Xcompiler-fPIC"를 추가하는 것입니다. 추가된 효과는 다음과 같습니다.
CONFIG(debug, debug|release) {
     # Debug mode
     cuda_d.input = CUDA_SOURCES
     cuda_d.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o
     cuda_d.commands = $$CUDA_DIR/bin/nvcc -D_DEBUG $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -Xcompiler -fPIC -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
    cuda_d.dependency_type = TYPE_C
     QMAKE_EXTRA_COMPILERS += cuda_d
 }
 else {
     # Release mode
     cuda.input = CUDA_SOURCES
     cuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o
     cuda.commands = $$CUDA_DIR/bin/nvcc $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -Xcompiler -fPIC -arch=$$CUDA_ARCH -O3 -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
     cuda.dependency_type = TYPE_C
     QMAKE_EXTRA_COMPILERS += cuda
}

이의가 있으면 메시지를 남겨 주십시오. 감사합니다!

좋은 웹페이지 즐겨찾기