Trouble 37

C++ 코드 build 시, C++ 버전으로 인한 실패 해결법

C++ 코드를 build하는 과정에서 CMake, make를 한 번만 쳐서 성공하는 경우는 거의 없다. 환경 설정이 간단하지 않기 때문에 오류명을 보면서 시도의 시도를 거듭해서 build하는 경우가 더 많다. 나 역시도 그런다. 특히 C++을 안 쓴지 오래 돼서 사실 상 초급자가 되어버렸기 때문에 실수 때문이든 몰라서든 자주 구르면서 build를 가까스로 해낸다. 내가 겪은 오류 중 가장 간단해보이지만 원인을 찾아내기까지 가장 오래 걸렸던 C++ 버전 관련 오류의 해결법을 기록해두고자 한다. 오류 양상std와 같은 C++ 대표 namespace에 함수나 변수가 없다는 오류들.thirdparty 설치를 빼먹지 않았음에도 발생하는 not found, missing 오류들.예를 들어, std::integer_..

Docker 컨테이너 내 opencv-python 설치 시 ImportError: libGL.so.1 문제

ImportError: libGL.so.1: cannot open shared object file: No such file or directoryPython opencv를 사용하고자 하면 단순하게 pip install opencv-python을 입력하면 끝이라 큰 이슈가 없지만 Docker 컨테이너 내에서 같은 명령어를 치면 위 오류가 날 수 있다. 딱 봐도 libGL이 없다는 오류라는 것을 알 수 있는데 libgl1-mesa-glx를 설치해주면 된다. 컨테이너에 직접 설치할 경우, 다음과 같이 하면 끝이고pip install libgl1-mesa-glx Docker 이미지에 선반영되게 만들고 싶다면, DockerFile 내에 다음을 추가해주면 된다. -y tag를 까먹지 말자.~~~~ 생략 RUN a..

Trouble/Docker 2023.03.21

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:1131)> 문제

URLError: SDK 설치하려고 하는 과정에서 위 오류를 만난 적이 있다. (_ssl.c:NUMBER) 형태로 뒤의 NUMBER만 바뀌어 가면서 많은 사람들이 겪는 문제였는데 원인은 웹사이트 보안 이슈였다. ssl은 잘은 모르지만 대충 웹사이트와 웹사이트 간의 데이터를 옮길 때 암호화는 표준 기술인데 이와 관련된 이슈인 만큼 현재 사용하는 코드가 권한 문제로 특정 웹사이트에 접근한다는 말이다. 웹사이트 자체가 권한을 닫아버렸을 수도 있지만 그게 아니라면 코드가 동작하는 PC의 기본 설정 때문이라고 한다. 해결법은 아래와 같이 기본 설정을 변경해주는 것이다. import ssl ssl._create_default_https_context = ssl._create_unverified_context 대충 ..

Trouble/Linux 2023.03.14

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV) 문제

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV) 위 오류명이 나오면서 프로그램이 터지는 경우가 더러있다. 에러에 대한 상세 내용이나 발생 위치에 대한 설명 없이 그냥 터지는 경우가 많은데 원인을 찾기 어려운 오류 중 하나다. 원인은 간단하게 말해서 segmentation fault, 즉 메모리 레벨에서 문제가 생긴 것이다. 허용되지 않은 (혹은 잠겨있는) 메모리에 접근하려고 하거나 잘못된 방법으로 메모리에 접근하려고 할 경우 발생하는 것이다. 힌트는 메모리 사용에서 문제가 생겼다는 것 뿐, 발생 원인은 작성하던 코드에 따라 천차만별이므로 정해진 해결법은 없다. 다만 다음과 같은 리스트를 점검해보면 좋다. multi proce..

Trouble/Linux 2023.03.08

numpy.ndarray size changed, may indicate binary incompatibility 문제

numpy.ndarray size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject SDK를 사용하거나 다른 코드를 가져와 사용할 때 위와 같은 오류를 볼 수 있다. 이름에서 알 수 있다시피 numpy와 관련된 호환성 문제라는 것을 알 수 있다. 뒤에 96, 88과 같은 숫자가 사용하려는 SDK 및 코드들과 numpy의 버전을 암시하는 숫자인데 이를 알 필욘없다. 해결 방법은 가장 단순하게 numpy를 다시 깔아주는 것이 좋다. pip uninstall numpy pip install numpy ----- pip install --upgrade numpy 만약 최신 버전으로 업그레이드해서..

cv2.error: OpenCV(4.5.5) /io/opencv/modules/imgcodecs/src/grfmt_exr.cpp:103: error: (-213:The function/feature is not implemented) imgcodecs: OpenEXR codec is disabled.

cv2.error: OpenCV(4.5.5) /io/opencv/modules/imgcodecs/src/grfmt_exr.cpp:103: error: (-213:The function/feature is not implemented) imgcodecs: OpenEXR codec is disabled. You can enable it via 'OPENCV_IO_ENABLE_OPENEXR' option. Refer for details and cautions here: https://github.com/opencv/opencv/issues/21326 in function 'initOpenEXR' Opencv로 depth 이미지를 다룰 때 depth 이미지의 확장자가 .exr 파일일 경우, 위와 같은 오류가 ..

Trouble/OpenCV 2023.02.20

RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the 'spawn' start method

torch로 학습 코드 작성 중에 제목 혹은 위와 같은 에러가 났다. 오류명에 적혀있듯이, multiprocessing을 사용하고자 하는 과정에 발생하는 에러인데 대놓고 torch.multiprocessing을 사용한 적이 없음에도 오류가 났다. 간단히 찾아보니 대부분 torch DataLoader 클래스 사용 시 num_workers를 지정해서 데이터를 불러올 때 그런다고 한다. 내부적으로 torch.multiprocessing을 사용하기 때문인데 해결 방법은 다음과 같다. torch.multiprocessing.set_start_method('spawn') 코드 도입부에 위와 같은 설정을 선언해주면 된다. 간단하다.

sudo apt-get update 시 ppa repository로 인한 error 해결법

ubuntu에서 심심치 않게 새로운 설치를 하게 될 때 사용하는 명령어가 sudo apt-get udpate 다. 웬만하면 1~3초 내에 끝나는 작업인데 가끔 요상한 에러를 보이면서 멈출 때가 있다. 대표적 원인 중 하나인 ppa 관련 에러의 해결법을 정리하고자 한다. Err:22 http://ppa.launchpad.net/bzindovic/suitesparse-bugfix-1319687/ubuntu focal Release 404 Not Found [IP: 185.125.190.52 80] Err:21 https://apt.kitware.com/ubuntu focal InRelease The following signatures couldn't be verified because the public ..

Trouble/Linux 2023.01.30