>백엔드 개발 >C++ >ffmpeg를 컴파일하는 동안 '공유 객체를 만들 때 '로컬 기호'에 대한 Relocation R_ARM_MOVW_ABS_NC를 사용할 수 없습니다.' 오류가 발생하는 이유는 무엇입니까?

ffmpeg를 컴파일하는 동안 '공유 객체를 만들 때 '로컬 기호'에 대한 Relocation R_ARM_MOVW_ABS_NC를 사용할 수 없습니다.' 오류가 발생하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-10 14:37:03478검색

Why Am I Getting

ffmpeg로 컴파일하는 동안 오류 발생: "공유 객체를 만들 때 '로컬 기호'에 대해 R_ARM_MOVW_ABS_NC를 재배치하는 것은 사용할 수 없습니다. -fPIC로 다시 컴파일하세요."

ARM Ubuntu 시스템에 ffmpeg를 다시 설치하려고 시도하는 동안 컴파일 오류가 발생했습니다. ffmpeg 라이브러리를 활용하는 프로그램을 사용할 때 발생합니다. 표시된 오류 메시지는 다음과 같습니다.

/usr/bin/ld: /usr/local/lib/libavcodec.a(amrnbdec.o): relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

이 오류는 정적 라이브러리(.a)를 동적 라이브러리(.so)와 연결하려고 할 때 발생합니다. 이 문제를 해결하려면 -fPIC 플래그를 사용하여 ffmpeg를 다시 컴파일해야 합니다.

-fPIC으로 다시 컴파일

./ 중에 --enable-shared 플래그 추가 구성은 ffmpeg에 동적 라이브러리로 빌드하도록 지시합니다. 또는 원하는 경우 정적 라이브러리를 완전히 비활성화하도록 선택할 수 있습니다.

ffmpeg 라이브러리가 -fPIC으로 다시 컴파일되면 앞서 언급한 오류 없이 컴파일이 성공적으로 진행되어야 합니다.

위 내용은 ffmpeg를 컴파일하는 동안 '공유 객체를 만들 때 '로컬 기호'에 대한 Relocation R_ARM_MOVW_ABS_NC를 사용할 수 없습니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.