이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 명령 abi-compliance-checker입니다.
프로그램:
이름
abi-compliance-checker - 공유 C/C++ 라이브러리의 ABI 호환성을 비교하는 도구
버전
기술
이름:
ABI Compliance Checker(abi-compliance-checker) 이전 버전과의 호환성을 확인합니다.
C/C++ 라이브러리 API
설명 :
ABI Compliance Checker(ABICC)는 역 바이너리 및
공유 C/C++ 라이브러리의 소스 수준 호환성. 이 도구는 헤더 파일을 확인합니다.
및 이전 버전과 새 버전의 공유 라이브러리(*.so) 및 API의 변경 사항 분석 및
바이너리 및/또는 소스 수준 호환성을 깨뜨릴 수 있는 ABI(ABI=API+컴파일러 ABI):
호출 스택의 변경, v-테이블 변경, 제거된 기호, 이름이 변경된 필드 등
바이너리 비호환성으로 인해 응용 프로그램이 충돌하거나 잘못된 동작이 발생할 수 있습니다.
새 버전에서 실행되는 경우 이전 버전의 라이브러리로 빌드됩니다. 원천
비호환성으로 인해 새 라이브러리 버전으로 재컴파일 오류가 발생할 수 있습니다.
이 도구는 소프트웨어 라이브러리 개발자 및
이전 버전과의 호환성을 보장하는 데 관심이 있는 운영 체제, 즉
이전 응용 프로그램을 실행하거나 최신 라이브러리 버전으로 다시 컴파일합니다.
또한 ISV는 이 도구를 사용하여 새로운 애플리케이션으로의 이식성을 확인할 수 있습니다.
라이브러리 버전. 발견된 문제는 적응할 때 고려할 수 있습니다.
새 라이브러리 버전에 대한 응용 프로그램.
이 도구는 무료 소프트웨어입니다. 재배포 및/또는 수정할 수 있습니다.
GNU LGPL 또는 GNU GPL의 조건.
용법:
abi-compliance-checker [옵션]
예 :
이상 준수 검사기 -lib 이름 -늙은 OLD.xml -새로운 NEW.xml
OLD.xml 및 NEW.xml은 XML 설명자입니다.
1.0
/path1/to/header(들)/ /path2/to/header(s)/
...
/경로1/to/라이브러리(들)/ /경로2/to/라이브러리(들)/
...
정보 옵션:
-h|-도움
이 도움말을 인쇄하십시오.
-i|-정보
완전한 정보를 인쇄하십시오.
-v|-버전
버전 정보를 인쇄합니다.
-덤프 버전
도구 버전(1.99.14)을 인쇄하고 다른 작업은 하지 마십시오.
일반 옵션:
-l|-lib|-라이브러리 이름
라이브러리 이름(버전 제외).
-d1|-이전|-o 경로
첫 번째(이전) 라이브러리 버전의 설명자입니다. 다음 중 하나일 수 있습니다.
1. XML 설명자(VERSION.xml 파일):
1.0
/path1/to/header(들)/ /path2/to/header(s)/
...
/경로1/to/라이브러리(들)/ /경로2/to/라이브러리(들)/
...
...
2. 생성된 ABI 덤프 -덤프 옵션 3. 헤더 및/또는 공유가 있는 디렉토리
라이브러리 4. 단일 헤더 파일
2-4개의 설명자 유형을 사용하는 경우 버전 번호를 지정해야 합니다.
과 -v1 그리고 -v2 옵션도 있습니다.
자세한 내용은 다음을 참조하십시오 :
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2|-new|-n 경로
두 번째(새) 라이브러리 버전의 설명자.
-덤프|-dump-abi 경로
입력 XML 설명자에 대한 라이브러리 ABI 덤프를 만듭니다. 어디든지 옮길 수 있습니다
설명자 대신 전달합니다. 또한 도구를 디버깅하는 데 사용할 수 있습니다.
지원되는 ABI 덤프 버전: 2.0<=V<=3.2
EXTRA 옵션:
-앱|-응용 프로그램 경로
이 옵션을 사용하면 확인해야 하는 응용 프로그램을 지정할 수 있습니다.
새 라이브러리 버전으로의 이식성.
-정적 라이브러리
공유 라이브러리 대신 정적 라이브러리를 확인하십시오. NS 섹션
XML 설명자는 정적 라이브러리 위치를 가리켜야 합니다.
-gcc-경로 PATH
일반적인(호스트) GCC 대신 사용할 크로스 GCC 컴파일러의 경로입니다.
-gcc-접두사 접두사
GCC 도구 체인 접두사.
-gcc-옵션 옵션
추가 컴파일러 옵션.
-sysroot DIR
대체 루트 디렉토리를 지정하십시오. 도구는 다음에서 포함 경로를 검색합니다.
DIR/usr/include 및 DIR/usr/lib 디렉토리.
-v1|-버전1 NUM
설명자 외부에 첫 번째 라이브러리 버전을 지정합니다. 이 옵션은 다음과 같은 경우에 필요합니다.
대체 설명자 유형을 선호했습니다(참조 -d1 선택권).
일반적으로 XML 설명자에서 지정해야 합니다.
버전
-v2|-버전2 NUM
설명자 외부에 두 번째 라이브러리 버전을 지정합니다.
-vnum NUM
생성된 ABI 덤프에서 라이브러리 버전을 지정하십시오. NS 섹션
이 경우 입력 XML 설명자를 덮어씁니다.
-s|-엄격
모든 호환성 경고를 문제로 취급하십시오. 여러 "낮음" 심각도 추가
도구의 반환 값에 문제가 있습니다.
-헤더 전용
공유 라이브러리가 없는 헤더 파일을 확인하십시오. 실행하기 쉽지만 다음을 제공할 수 있습니다.
가양성이 있고 탐지가 없는 저품질 호환성 보고서
추가/제거된 기호.
또는 "없음"이라는 단어를 섹션
XML 설명자:
없음
-쇼-레트발
보고서에 기호의 반환 유형을 표시합니다.
-기호 목록 PATH
이 옵션을 사용하면 기호 목록이 있는 파일을 지정할 수 있습니다.
C++) 확인해야 합니다. 다른 기호는 확인하지 않습니다.
-유형 목록 PATH
이 옵션을 사용하면 형식 목록이 있는 파일을 지정할 수 있습니다.
확인했습니다. 다른 유형은 확인되지 않습니다.
-건너뛰기 기호 PATH
확인하지 말아야 할 기호 목록입니다.
-건너뛰기 유형 PATH
확인하지 말아야 할 유형 목록입니다.
-헤더 목록 PATH
확인/덤프해야 하는 헤더 목록이 있는 파일입니다.
-건너뛰기 헤더 PATH
헤더 파일 목록이 있는 파일로, 확인해서는 안 됩니다.
-헤더 이름
이 헤더의 ABI만 확인/덤프합니다.
-사용 덤프
두 가지 버전의 라이브러리에 대한 덤프를 만들고 덤프를 비교합니다. 이것은 증가해야합니다
도구의 성능을 저하시키고 시스템 메모리 사용량을 줄입니다.
-Nostdinc
헤더 파일에 대해 GCC 표준 시스템 디렉토리에서 검색하지 마십시오.
-덤프 시스템 이름 -sysroot DIR
DIR 디렉토리에서 모든 공유 라이브러리 및 헤더 파일 찾기, XML 생성
설명자를 만들고 각 라이브러리에 대해 ABI 덤프를 만듭니다. ABI 덤프의 결과 집합은 다음과 같습니다.
비교(--cmp-시스템) 다른 버전의 운영을 위해 생성된 다른 하나와 함께
호환성을 확인하기 위해 시스템. 지정하는 것을 잊지 마십시오
-교차 gcc 대상 시스템에 특정 버전의 GCC가 필요한 경우 옵션
컴파일러(호스트 GCC와 다름). 시스템 ABI 덤프는 다음을 위해 생성됩니다.
sys_dumps/이름/ARCH
-덤프 시스템 설명자.xml
이전 옵션과 동일하지만 대상 시스템의 XML 설명자를 다음과 같이 취합니다.
설명해야 하는 입력:
/* 기본 섹션 */
/* 시스템 이름 */
/* 헤더 파일의 경로 목록 및/또는
헤더 파일이 있는 디렉토리, 한 줄에 하나씩 */
/* 공유 라이브러리에 대한 경로 목록 및/또는
공유 라이브러리가 있는 디렉토리, 한 줄에 하나씩 */
/* 선택적 섹션 */
/* 검색할 디렉토리 목록
헤더 파일이 자동으로 포함 경로를 생성하려면 한 줄에 하나씩 */
/* 검색할 디렉토리 목록
종속성을 해결하기 위한 공유 라이브러리의 경우 한 줄에 하나씩 */
/* 사용된 도구가 있는 디렉토리 목록
분석용(GCC 도구 모음), 한 줄에 하나씩 */
/* GCC 툴체인 접두어.
예 :
arm-linux-gnueabi arm-none-symbianelf */
/* 추가 GCC 옵션, 한 줄에 하나씩 */
-sysinfo DIR
이 옵션은 다음과 함께 사용해야 합니다. -덤프 시스템 운영의 ABI를 덤프하는 옵션
시스템 및 덤핑 프로세스를 구성합니다. 패키지에서 샘플을 찾을 수 있습니다.
모듈/대상/{유닉스, 심비안, 윈도우}
-cmp-시스템 -d1 sys_dumps/NAME1/ARCH -d2 sys_dumps/NAME2/ARCH
두 시스템 ABI 덤프를 비교합니다. 각 라이브러리에 대한 호환성 보고서를 작성하고
검사된 모든 라이브러리에 대한 테스트 결과 요약을 포함하는 공통 HTML 보고서.
보고서 생성 대상:
sys_compat_reports/NAME1_to_NAME2/ARCH
-libs-목록 PATH
덤프해야 하는 라이브러리 목록이 있는 파일 -덤프 시스템 option
또는 다음에서 확인해야 합니다. -cmp-시스템 옵션을 선택합니다.
-내선|-확장
라이브러리 A가 다른 라이브러리 B에서 사용되어야 하고 제어하려는 경우
B의 ABI인 경우 이 옵션을 활성화해야 합니다. 도구가 변경 사항을 확인합니다
라이브러리 A의 어떤 함수에서도 사용되지 않더라도 모든 데이터 유형에서
데이터 유형은 A 라이브러리 ABI의 일부가 아니지만 B의 ABI의 일부일 수 있습니다.
도서관.
짧은 계획은 다음과 같습니다.
앱 C(손상됨) -> lib B(손상된 ABI) -> lib A(안정적인 ABI)
-q|-조용한
stdout 및 stderr 대신 모든 메시지를 파일로 인쇄합니다. 기본 경로(일 수 있음
에 의해 변경됨 -로그 경로 옵션):
로그/런.로그
- 표준 출력
분석 결과(호환성 보고서 및 ABI 덤프)를 stdout 대신 stdout으로 인쇄합니다.
파일 생성. 이렇게 하면 데이터를 다른 프로그램으로 파이핑할 수 있습니다.
-보고서 형식 FMT
호환성 보고서의 형식을 변경합니다. 형식:
htm - HTML 형식(기본값) xml - XML 형식
-덤프 형식 FMT
ABI 덤프의 형식을 변경합니다. 형식:
perl - Data::Dumper 형식(기본값) xml - XML 형식
-xml
별칭: --보고서 형식=XML or --덤프 형식=XML
-랑 랑
라이브러리 언어(C 또는 C++)를 설정합니다. 도구를 사용할 수 없는 경우 이 옵션을 사용할 수 있습니다.
언어를 자동 감지합니다. 이 옵션은 C 라이브러리 헤더를 확인하는 데 유용할 수 있습니다.
(--lang=C) in --헤더 전용 or --펼친 모드.
-아치 아치
라이브러리 아키텍처(x86, x86_64, ia64, arm, ppc32, ppc64, s390 등)를 설정합니다. NS
이 옵션은 도구가 입력의 올바른 아키텍처를 감지할 수 없는 경우에 유용합니다.
사물.
-바이너리|-빈|-아비
"바이너리" 호환성 문제만 표시합니다. 보고서 생성:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-source|-src|-api
"소스" 호환성 문제만 표시합니다. 보고서 생성:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-한계 영향 제한
변경된 설명 아래 나열된 영향을 받는 기호의 최대 수
보고서에 입력합니다.
기타 옵션:
-테스트
내부 테스트를 실행합니다. 샘플 라이브러리의 두 가지 호환되지 않는 바이너리 버전을 만들고
도구를 실행하여 호환성을 확인하십시오. 이 옵션을 사용하면 다음을 확인할 수 있습니다.
이 도구는 현재 환경에서 올바르게 작동합니다.
-테스트 덤프
ABI 덤프 생성, 읽기 및 비교 기능을 테스트합니다.
-디버그
디버깅 모드. 화면에 디버그 정보를 인쇄합니다. 중간 분석 단계 저장
디버그 디렉토리에서:
디버그/LIB_NAME/VERSION/
또한 사용을 고려하십시오 --덤프 도구 디버깅을 위한 옵션입니다.
-cpp 호환
헤더 파일이 C 언어로 작성되고 G++로 컴파일할 수 있는 경우
컴파일러(즉, C++ 키워드를 사용하지 않음)를 사용하면 이에 대해 도구에 알릴 수 있습니다.
분석 속도를 높입니다.
-cpp 비호환
입력 C 헤더 파일이 C++ 키워드를 사용하는 경우 이 옵션을 설정하십시오.
-p|-params 경로
함수 매개변수 이름이 있는 파일의 경로입니다. 보고서 개선에 사용할 수 있습니다.
라이브러리 헤더 파일에 매개변수 이름이 없는지 확인하십시오. 파일 형식:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relpath PATH
라이브러리 덤프에 사용되는 XML 설명자에서 {RELPATH} 매크로를 PATH로 바꿉니다.
ABI(참조 -덤프 선택권).
-relpath1 PATH
{RELPATH} 매크로를 첫 번째 XML 설명자(-d1).
-relpath2 PATH
{RELPATH} 매크로를 두 번째 XML 설명자(-d2).
-덤프 경로 PATH
ABI 덤프를 생성할 *.abi.tar.gz 또는 *.abi 파일 경로를 지정하십시오. 기본:
abi_dumps/LIB_NAME/LIB_NAME_VERSION.abi.tar.gz
-종류
ABI 덤프에서 데이터 정렬을 활성화합니다.
-보고 경로 PATH
호환성 보고서에 대한 경로입니다. 기본:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
-bin 보고서 경로 PATH
"바이너리" 호환성 보고서에 대한 경로입니다. 기본:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-src 보고서 경로 PATH
"소스" 호환성 보고서에 대한 경로입니다. 기본:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-로그 경로 PATH
모든 메시지의 로그 경로입니다. 기본:
로그/LIB_NAME/VERSION/log.txt
-log1-경로 PATH
라이브러리의 첫 번째 버전에 대한 로그 경로입니다. 기본:
로그/LIB_NAME/V1/log.txt
-log2-경로 PATH
라이브러리의 두 번째 버전에 대한 로그 경로입니다. 기본:
로그/LIB_NAME/V2/log.txt
-로깅 모드 모드
로깅 모드를 변경합니다. 모드:
w - 이전 로그 덮어쓰기(기본값) a - 이전 로그 추가 n - 로그를 쓰지 않음
- 영향을 받는 목록
HTML 호환성 옆에 호환되지 않는 기호 목록이 있는 파일 생성
보고서. GNU binutils에서 'c++filt @file' 명령을 사용하여
생성된 파일. 기본 이름:
abi_affected.txt src_affected.txt
-구성 요소 이름
HTML 보고서의 제목 및 요약에 있는 구성 요소 이름입니다. 기본:
도서관
-제목 이름
보고서 제목의 라이브러리 이름을 NAME으로 변경합니다. 기본적으로
에 의해 지정된 이름 -l 옵션을 선택합니다.
-추가 정보 DIR
추가 정보를 DIR에 덤프합니다.
-추가 덤프
번역 단위의 모든 기호를 포함하는 확장 ABI 덤프를 만듭니다.
-힘
도구가 작동하지 않으면 이 옵션을 사용해 보십시오.
-공차 LEVEL
입력 헤더 파일을 성공적으로 컴파일하기 위해 일련의 경험적 방법을 적용합니다. 당신은 할 수 있습니다
하나의 문자열로 결합하여 여러 허용 수준을 활성화합니다(예: 13, 124,
등.). 레벨:
1 - 비 Linux 헤더 건너뛰기(예: win32_*.h 등) 2 - 내부 헤더 건너뛰기(예:
*_p.h, impl/*.h 등) 3 - 비 Linux 헤더를 포함하는 헤더 건너뛰기 4 - 건너뛰기
다른 사람이 포함하는 헤더
-관대 한
최고 허용 수준을 활성화합니다[1234].
-검사
ABI 덤프의 완성도를 확인하십시오.
-빠른
빠른 분석. 일부 템플릿 인스턴스의 검사를 비활성화합니다.
-내부 기호 건너뛰기 무늬
패턴과 일치하는 기호를 확인하지 마십시오.
-내부 유형 건너뛰기 무늬
패턴과 일치하는 유형을 확인하지 마십시오.
보고서:
호환성 보고서는 다음에 대해 생성됩니다.
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
다음 위치에 대한 로그가 생성됩니다.
로그/LIB_NAME/V1/log.txt 로그/LIB_NAME/V2/log.txt
EXIT 코드 :
0 - 호환됩니다. 도구가 오류 없이 실행되었습니다. XNUMX이 아닌 - 호환되지 않거나
도구가 오류와 함께 실행되었습니다.
추가 정보:
http://lvc.github.io/abi-compliance-checker/
onworks.net 서비스를 사용하여 온라인으로 abi-compliance-checker 사용