대상 파일 을 통 해 동적 라 이브 러 리 자동 생 성
(1) 원본 파일 을 직접 컴 파일 하여 대상 파일 을 통 해 g + 또는 gcc 명령 으로 동적 라 이브 러 리 를 생 성 합 니 다.
(2) 기 존의 정적 라 이브 러 리 를 분리 한 후에 포장 하면 동적 라 이브 러 리 를 생 성 할 수 있다.
(3) 기 존의 정적 라 이브 러 리 를 연결 하여 동적 라 이브 러 리 생 성;
이해 분석:
(2), (3) 기 존의 정적 라 이브 러 리 가 필요 합 니 다.(2) 흩 어 지고 포장 하 는 과정 은 간단 하지만 정적 라 이브 러 리 는 여러 개의 모듈 이 있 습 니 다. 서로 다른 모듈 에 같은 이름 의 파일 이 존재 할 수 있 습 니 다. 흩 어 진 후에 인터페이스 가 손실 될 수 있 습 니 다. (하나의 키 모듈 A. o 가 다른 키 모듈 A. o 를 덮어 씁 니 다) 또한 정적 라 이브 러 리 는 링크 의 기호 로 호출 과정 에서 덮어 씁 니 다.재 접속 을 분산 시 키 면 매우 많은 정의 되 지 않 은 문제 와 C + 재 업로드 로 인 한 C 에서 기 호 를 찾 지 못 하 는 등 문제 가 발생 할 수 있 습 니 다.또한 (3) 는 비교적 빠 른 방식 으로 원본 파일 의 주 함 수 를 따로 써 서 정적 라 이브 러 리 의 입구 함 수 를 호출 하고 입구 가 정적 라 이브 러 리 에 필요 한 모든 기능 모듈 로 이동 할 수 있 도록 해 야 한다. 그러면 동적 라 이브 러 리 를 사용 할 때 일부 기능 이 연결 되 지 않 은 것 을 발견 할 수 있다.
현재 여전히 표준 방법 을 채택 하고 있다.
컴 파일 로 생 성 된 대상 파일 과 링크 가 필요 한 시스템 라 이브 러 리, porting 라 이브 러 리 를 이용 하여 동적 라 이브 러 리 를 생 성 합 니 다.
기본 명령:
(1) gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so
(2) 복잡 한 Makefile 호출 을 통 해 생 성 할 동적 라 이브 러 리 이름, 의존 하 는 라 이브 러 리, 모든. o 를 입력 합 니 다. 서류 면 됩 니 다.
Compile. rules 파일 은 다음 과 같 습 니 다.
LINK:= $(CROSS)-g++
export CROSS:=arm-linux-androideabi
define MMCP_SHARED_LIBRARY
$(LINK) -nostdlib \
-Wl,-shared,-Bsymbolic \
-Wl,-soname,$(notdir $@)\
-Wl,--start-group \
$(Bestwin_Hi3716C_Static_Lib) \
-ldl -llog -lz -lutils -lcutils -lnetutils -lporting \
$(LDFLAGS) \
$(INPUTSSO) \
$^\
-Wl,--end-group \
-Wl,--whole-archive -Wl,--no-whole-archive \
-Wl,--no-undefined -Wl,-z,noexecstack \
-Wl,[email protected]\
-o $@; \
cp -rfv $@ $@_notstrip;\
$(CROSS)-strip -S $@;
CCompile. rules 파일 은 다음 과 같 습 니 다.
$(DLL_EXPORT): $(OBJECTS_C) $(OBJECTS_CXX) $(INPUTS)
@echo Building $@
$(MMCP_SHARED_LIBRARY)
설명 OBJECTSC,OBJECTS_CXX 는 각각 c, c++ 파일 의 대상 파일 이 Compile. rules 에 전달 되 는 것 은 파일 에 의존 하 는 것 입 니 다 $^,
그리고 DLLEXPORT 는 모듈 디 렉 터 리 에서 동적 라 이브 러 리 이름 을 먼저 Makefile 로 정의 합 니 다. rules 는 $@ 입 니 다.
모듈 디 렉 터 리 의 Makefile
include CCompile.rules
include Compile.rules
정의 DLLEXPORT, SOURCES, INPUTSOSO 면 됩 니 다.
다음 편 은 이 작업 을 수행 하기 위해 Makefile 을 스 크 립 트 로 직접 설정 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.