[Error] after updating MacOS 15.4 and caused 'Library not loaded: @executable_path/../Frameworks/libopenblasp-r0.3.29.dylib'.
2025. 4. 14. 09:50ㆍ카테고리 없음
opencv를 사용하는 프로젝트가 macos를 15.4로 업데이트 한 이후에 위와 같은 오류를 발생하기 시작했습니다.
번들링 후 dylibbundler를 실행했는데도 .app/Contents/Frameworks 폴더에 libopenblasp-r0.3.29.dylib 파일이
포함되지 않는 것을 확인하였습니다.
조치 사항으로
1. 'libopenblasp-r0.3.29.dylib'와 libopenblas.0.dylib' 를 찾아서 /Framework에 복사하였습니다.
${APP_FOLDER}는 실제 .app 폴더의 경로입니다.
cp -v /opt/homebrew/opt/openblas/lib/libopenblasp-r0.3.29.dylib ${APP_FOLDER}/Contents/Frameworks/
cp -v /opt/homebrew/opt/openblas/lib/libopenblas.0.dylib ${APP_FOLDER}/Contents/Frameworks/
2. install_name_tool을 사용하여 'libopenblasp-r0.3.29.dylib'가 참조하는 경로를 수정하였습니다.
install_name_tool -change \
/opt/homebrew/opt/openblas/lib/libopenblas.0.dylib \
@executable_path/../Frameworks/libopenblas.0.dylib \
${APP_FOLDER}/Contents/Frameworks/libopenblasp-r0.3.29.dylib
install_name_tool -change \
/opt/homebrew/opt/gcc/lib/gcc/current/libgfortran.5.dylib \
@executable_path/../Frameworks/libgfortran.5.dylib \
${APP_FOLDER}/Contents/Frameworks/libopenblasp-r0.3.29.dylib
install_name_tool -change \
/opt/homebrew/opt/gcc/lib/gcc/current/libgomp.1.dylib \
@executable_path/../Frameworks/libgomp.1.dylib \
${APP_FOLDER}/Contents/Frameworks/libopenblasp-r0.3.29.dylib
install_name_tool -change \
/opt/homebrew/opt/gcc/lib/gcc/current/libquadmath.0.dylib \
@executable_path/../Frameworks/libquadmath.0.dylib \
${APP_FOLDER}/Contents/Frameworks/libopenblasp-r0.3.29.dylib
2.1. 변경 전 참조 경로는 다음과 같습니다.
otool -L ./libopenblasp-r0.3.29.dylib
./libopenblasp-r0.3.29.dylib:
/opt/homebrew/opt/openblas/lib/libopenblas.0.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/homebrew/opt/gcc/lib/gcc/current/libgfortran.5.dylib (compatibility version 6.0.0, current version 6.0.0)
/opt/homebrew/opt/gcc/lib/gcc/current/libgomp.1.dylib (compatibility version 2.0.0, current version 2.0.0)
/opt/homebrew/opt/gcc/lib/gcc/current/libquadmath.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1351.0.0)
2.2. 변경 후 참조 경로는 다음과 같습니다.
otool -L ./libopenblasp-r0.3.29.dylib
./libopenblasp-r0.3.29.dylib:
@executable_path/../Frameworks/libopenblasp-r0.3.29.dylib (compatibility version 0.0.0, current version 0.0.0)
@executable_path/../Frameworks/libgfortran.5.dylib (compatibility version 6.0.0, current version 6.0.0)
@executable_path/../Frameworks/libgomp.1.dylib (compatibility version 2.0.0, current version 2.0.0)
@executable_path/../Frameworks/libquadmath.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1351.0.0)
3. install_name_tool 이후 전체 dylib와 실행파일, .app에 대한 코드 사인을 실행했습니다.