Xenomai를 사용하여 동적 링크 라이브러리 만들기

1402 단어 삽입식 개발
Xenomai를 사용하여 동적 링크 라이브러리 만들기
프로젝트에서 Xenomai가 실시간 주기 작업을 만들고 동적 링크 라이브러리로 봉인해야 합니다. 이 기록에 문제가 있습니다.
QT컴파일xenomai 사용자층 프로그램의 절차에 따라 동적 라이브러리 프로젝트를 구축한 후.
컴파일하면 다음과 같은 오류가 발생합니다.
:-1: error: /usr/xenomai/lib/xenomai/bootstrap.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC

동적 라이브러리를 컴파일하려면 다음과 같이 -fpIC 플래그를 추가해야 합니다.
XCFLAGS = $(shell $$XENO_CONFIG  -fPIC --skin=alchemy --cflags)
XLDFLAGS = $(shell $$XENO_CONFIG  -fPIC --skin=alchemy --ldflags)

컴파일링을 통해 동적 링크 라이브러리를 실행하면 다음 오류가 발생합니다.
Segmentation fault(core dumped)

스택 오버플로우가 발생했습니다.
다행히 Xenomai 포럼에서 같은 문제에 부딪힌 사람이 있었어요.
Cannot create a share library linked against Xenomai libs
아래 설명에 따라 공식 문서를 참조하십시오.
XENO-CONFIG(1) Manual Page
--auto-init-solib
This switch enables the auto-initialization feature described above for a shared library target instead of a pure executable. The main difference resides in a position-independent (PIC) glue code being used for bootstrapping the initialization.

컴파일 매개변수에 - auto-init-solib 플래그 추가
XCFLAGS = $(shell $$XENO_CONFIG  --skin=alchemy  --auto-init-solib --cflags)
XLDFLAGS = $(shell $$XENO_CONFIG  --skin=alchemy --auto-init-solib --ldflags)

다시 실행, 성공!

좋은 웹페이지 즐겨찾기