opencv4.2를 컴파일할 때 `jpeg_default_qtables' 오류에 대한 정의되지 않은 참조에 대한 해결책

  • 운영 체제: kylinV10
  • opencv 버전: 4.2.0

opencv4.2.0 버전 컴파일 시 `jpeg_default_qtables'에 대한 정의되지 않은 참조 오류 메시지가 나타나 openc 컴파일이 중단되고 컴파일을 계속할 수 없으므로 이 오류를 해결해야 합니다.

해결책

잘못된 이름을 확인하십시오.이름 분석에 따르면 jpeg 타사 라이브러리가 현재 시스템에 설치되지 않았을 가능성이 큽니다.http://www.ijg.org/로 이동하여 최신 소스 패키지 jpegsrc를 다운로드하십시오. v9e.tar.gz, 다음과 같이 순서대로 컴파일 및 설치를 시작합니다.

tar -xzvf jpegsrc.v9e.tar.gz 
cd jpeg-9e
 ./configure
 make libdir=/usr/lib64 
  make libdir=/usr/lib64 install

위의 명령을 실행한 후 명령줄의 최종 표시 출력은 다음과 같습니다.

make[1]: Entering directory '/data3/deepblue/projects/build/jpeg-9e'
 /usr/bin/mkdir -p '/usr/lib64'
 /bin/sh ./libtool   --mode=install /usr/bin/install -c   libjpeg.la '/usr/lib64'
libtool: install: /usr/bin/install -c .libs/libjpeg.so.9.5.0 /usr/lib64/libjpeg.so.9.5.0
libtool: install: (cd /usr/lib64 && {
    
     ln -s -f libjpeg.so.9.5.0 libjpeg.so.9 || {
    
     rm -f libjpeg.so.9 && ln -s libjpeg.so.9.5.0 libjpeg.so.9; }; })
libtool: install: (cd /usr/lib64 && {
    
     ln -s -f libjpeg.so.9.5.0 libjpeg.so || {
    
     rm -f libjpeg.so && ln -s libjpeg.so.9.5.0 libjpeg.so; }; })
libtool: install: /usr/bin/install -c .libs/libjpeg.lai /usr/lib64/libjpeg.la
libtool: install: /usr/bin/install -c .libs/libjpeg.a /usr/lib64/libjpeg.a
libtool: install: chmod 644 /usr/lib64/libjpeg.a
libtool: install: ranlib /usr/lib64/libjpeg.a
libtool: finish: PATH="/root/.vscode-server/bin/8dfae7a5cd50421d10cd99cb873990460525a898/bin/remote-cli:/data/home/tdsql/jdk/bin:/usr/local/bin:/data/home/tdsql/jdk/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/data/home/tdsql/hadoop/bin:/data/home/tdsql/hadoop/sbin:/usr/local/cuda-11.4/bin:/root/bin:/data/home/tdsql/hadoop/bin:/data/home/tdsql/hadoop/sbin:/usr/local/cuda-11.4/bin:/root/bin:/sbin" ldconfig -n /usr/lib64
ldconfig: /usr/lib64/libLLVM-7.so is not a symbolic link

----------------------------------------------------------------------
Libraries have been installed in:
   /usr/lib64

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
 /usr/bin/mkdir -p '/usr/local/bin'
  /bin/sh ./libtool   --mode=install /usr/bin/install -c cjpeg djpeg jpegtran rdjpgcom wrjpgcom '/usr/local/bin'
libtool: install: /usr/bin/install -c .libs/cjpeg /usr/local/bin/cjpeg
libtool: install: /usr/bin/install -c .libs/djpeg /usr/local/bin/djpeg
libtool: install: /usr/bin/install -c .libs/jpegtran /usr/local/bin/jpegtran
libtool: install: /usr/bin/install -c rdjpgcom /usr/local/bin/rdjpgcom
libtool: install: /usr/bin/install -c wrjpgcom /usr/local/bin/wrjpgcom
/bin/sh /data3/deepblue/projects/build/jpeg-9e/install-sh -d /usr/local/include
/usr/bin/install -c -m 644 jconfig.h /usr/local/include/jconfig.h
 /usr/bin/mkdir -p '/usr/local/include'
 /usr/bin/install -c -m 644 jerror.h jmorecfg.h jpeglib.h '/usr/local/include'
 /usr/bin/mkdir -p '/usr/local/share/man/man1'
 /usr/bin/install -c -m 644 cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 wrjpgcom.1 '/usr/local/share/man/man1'
 /usr/bin/mkdir -p '/usr/lib64/pkgconfig'
 /usr/bin/install -c -m 644 libjpeg.pc '/usr/lib64/pkgconfig'
make[1]: Leaving directory '/data3/deepblue/projects/build/jpeg-9e'

jpeg가 성공적으로 설치되었고 opencv는 계속 컴파일할 수 있음을 의미합니다.

추천

출처blog.csdn.net/jndingxin/article/details/124091793