반응형
정적 라이브러리를 공유 라이브러리로 변환하시겠습니까?
서드파티제 라이브러리는 주로 다수의 스태틱(static)으로 구성되어 있습니다..a
) 라이브러리 파일입니다.이것을 하나로 정리할 수 있습니다..a
라이브러리 파일입니다만, 정말 싱글로 만들어야 합니다..so
공유 라이브러리 파일
스태틱을 변환하는 방법이 있습니까?.a
공유에 줄세우기하다.so
파일? 아니면 일반적으로 대량의 스태틱을 조합하는 좋은 방법이 있을까요?.a
몇 개의 파일이 있는.o
파일을 하나의 파일로 만들다.so
파일링?
(물론 적절한 -L을 사용하여) 이 기능을 수행합니까?
gcc -shared -o megalib.so foo.o bar.o -la_static_lib -lb_static_lib
안 해?
g++ -shared -o megalib.so foo.o bar.o -Wl,--whole-archive -la_static_lib -lb_static_lib -Wl,--no-whole-archive -lc_static_lib -lother_shared_object
gcc에 대해서는 확실하지 않지만 g++의 경우 --whole-archive 링커 옵션을 추가하여 정적 라이브러리의 객체를 공유 객체에 포함시켜야 했습니다.--no-no-displays-displays 옵션은 libc_static_lib.a 및 libother_shared_object.so에 링크하는 경우 필요합니다.이러한 옵션은 megalib.so에 모두 포함되지 않습니다.
정적 라이브러리 내의 개체가 -fPIC 등을 사용하지 않고 컴파일된 경우에는 이 작업을 수행할 수 없습니다.
ar -x
에서의 특정 오브젝트에 초점을 맞추고 싶은 경우에도 도움이 됩니다..a
아무것도 추가하지 않는 것이 좋습니다.
예:
ar -x lib***.a
gcc -shared *.o -o lib***.so
ar -x lib***.a
gcc -shared *.o -o lib***.so
언급URL : https://stackoverflow.com/questions/655163/convert-a-static-library-to-a-shared-library
반응형
'programing' 카테고리의 다른 글
형식 변환 - 서명된 int/char로 서명되지 않음 (0) | 2022.08.31 |
---|---|
Vue 구성 요소의 "구성 요소 렌더링 함수에 무한 업데이트 루프가 있을 수 있습니다" 경고 (0) | 2022.08.31 |
vuex 저장소 데이터를 그래프에 전달할 수 없음 (0) | 2022.08.31 |
Vue.js - 부모 <-> 슬롯 통신 (0) | 2022.08.31 |
Class.newInstance()를 컨스트럭터 인수와 함께 사용할 수 있습니까? (0) | 2022.08.31 |