여러 C/C++ 라이브러리를 하나로 결합하려면 어떻게 해야 합니까?
프로젝트에 10개의 링크 라이브러리를 추가하거나 그 중 8개의 링크 라이브러리를 사용해야 하는 것에 지쳤습니다.libpng.a, libz.a, libjpeg.a와 같은 기존 라이브러리를 하나의 라이브러리로 결합하고 싶습니다.그게 가능한가요?.lib 라이브러리를 결합하는 것은 어떻습니까?
다음을 사용하여 각 라이브러리에서 개체 파일을 추출할 수 있습니다.
ar x <library name>
그리고 나서 그들 모두를 새로운 도서관으로 병합합니다.
ar cs <new library name> <list each extracted object file>
GNU 툴체인이 있는 Linux, MinGW 또는 Cygwin의 경우:
ar -M <<EOM
CREATE libab.a
ADDLIB liba.a
ADDLIB libb.a
SAVE
END
EOM
ranlib libab.a
아니면 당신이 그 존재를 유지할 수 있다면.liba.a
그리고.libb.a
:
ar crsT libab.a liba.a libb.a
Microsoft Visual C++ 툴체인이 설치된 Windows의 경우:
lib.exe /OUT:libab.lib liba.lib libb.lib
Unix와 같은 시스템에서 ld 및 ar 유틸리티는 이를 수행할 수 있습니다.http://en.wikipedia.org/wiki/Ar_(Unix) 을 확인하거나 리눅스 박스나 구글(예: '유닉스 마나')을 통해 man 페이지를 찾아보세요.
공유(동적) 라이브러리에 연결하는 것이 더 나을 수 있습니다.이렇게 하면 실행 파일에 종속성이 추가되지만 특히 그래픽 응용 프로그램을 작성하는 경우 파일 크기가 크게 줄어듭니다.
이 파일들을 하나의 파일로 물리적으로 결합하는 방법은 잘 모르겠지만, 일종의 추상화를 사용하여 원하는 모든 것을 포함하는 단일 "AllMyLibs.a/h"를 포함할 수 있습니다.컴파일러가 라이브러리를 검색하는 위치에 이것을 배치하여 모든 프로젝트에 사용할 수 있습니다.
제가 오해를 하고 있는 것 같은데, 최종 사용자 코드가 직접 전화하면 도서관만 배송하면 되는 거 아닌가요?JPEG 메서드 등에 대한 모든 액세스 권한이 정적 라이브러리의 코드에서 나온 경우 라이브러리를 라이브러리에 연결하기만 하면 됩니다.
예.,
---------------------
| End-user EXE file |
---------------------
|
| makes calls to
|
v
--------------------
| Your static lib.a |
--------------------
| makes calls to and links
v
------------------------------------ .....
| | |
------------- -------- ----------
| libjpeg.a | |libz.a| |libpng.a|
------------- -------- ----------
즉, 엔드 코드가 libz.a, libpng.a 등으로 직접 호출해야 하는 경우에만 문제가 됩니다.
예를 들어, 응용 프로그램 코드가 libz.a를 호출해야 하는 정당한 필요성이 있는 경우, 위에서 언급한 것은 동적 모듈을 사용하는 경우입니다.
여러 타사 라이브러리를 하나로 결합하면 문제가 더 많이 발생할 수 있습니다. 예를 들어 이러한 라이브러리 중 두 개가 프로그램에서 사용하지 않는 공통 기호를 정의하는 경우입니다.이제 라이브러리를 결합하기 전에 공통 기호의 모든 인스턴스(또는 하나를 제외한 모든 인스턴스)를 추출해야 합니다.
언급URL : https://stackoverflow.com/questions/13128/how-can-i-combine-several-c-c-libraries-into-one
'programing' 카테고리의 다른 글
PHP 스프레드시트: 로드된 행 수를 가져오는 방법은 무엇입니까? (0) | 2023.06.11 |
---|---|
프로그래밍 방식으로 연락처 액세스 요청 (0) | 2023.06.11 |
NSDate가 오늘인지 확인하는 방법은 무엇입니까? (0) | 2023.06.11 |
yup의 물건을 사용하는 방법.타자기로 모양을 만들 수 있습니까? (0) | 2023.06.11 |
VBA에서 양식이 닫힐 때 코드 실행(Excel 2007) (0) | 2023.06.11 |