aboutsummaryrefslogtreecommitdiff
path: root/doc/SysCheck/Usage.html
blob: b18301b8f8de73104a55e8b8926d80bdb9727d8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120

<!DOCTYPE html>
<html lang="en" dir="ltr" class="client-nojs">
<head>
<title>Operating Systems Compatibility</title>
<meta charset="UTF-8" />
<meta name="generator" content="MediaWiki 1.18.1" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch_desc.php" title="ISP_RAS (en)" />
<link rel="EditURI" type="application/rsd+xml" href="http://ispras.linuxbase.org/api.php?action=rsd" />
<link rel="alternate" type="application/atom+xml" title="ISP_RAS Atom feed" href="/index.php?title=Special:RecentChanges&amp;feed=atom" />
<link rel="stylesheet" href="/load.php?debug=false&amp;lang=en&amp;modules=mediawiki.legacy.commonPrint%2Cshared%7Cskins.monobook&amp;only=styles&amp;skin=monobook&amp;*" />
<!--[if lt IE 5.5000]><link rel="stylesheet" href="/skins/monobook/IE50Fixes.css?303" media="screen" /><![endif]-->
<!--[if IE 5.5000]><link rel="stylesheet" href="/skins/monobook/IE55Fixes.css?303" media="screen" /><![endif]-->
<!--[if IE 6]><link rel="stylesheet" href="/skins/monobook/IE60Fixes.css?303" media="screen" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" href="/skins/monobook/IE70Fixes.css?303" media="screen" /><![endif]--><meta name="ResourceLoaderDynamicStyles" content="" />
<link rel="stylesheet" href="/load.php?debug=false&amp;lang=en&amp;modules=site&amp;only=styles&amp;skin=monobook&amp;*" />
<style>a:lang(ar),a:lang(ckb),a:lang(fa),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}a.new,#quickbar a.new{color:#ba0000}

/* cache key: rasispdb:resourceloader:filter:minify-css:4:c88e2bcd56513749bec09a7e29cb3ffa */
</style>
<script src="/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=monobook&amp;*"></script>
<script>if(window.mw){
	mw.config.set({"wgCanonicalNamespace": "", "wgCanonicalSpecialPageName": false, "wgNamespaceNumber": 0, "wgPageName": "Operating_Systems_Compatibility", "wgTitle": "Operating Systems Compatibility", "wgCurRevisionId": 8057, "wgArticleId": 2655, "wgIsArticle": true, "wgAction": "view", "wgUserName": null, "wgUserGroups": ["*"], "wgCategories": ["ABI Compliance Checker"], "wgBreakFrames": false, "wgRestrictionEdit": [], "wgRestrictionMove": []});
}
</script><script>if(window.mw){
	mw.loader.load(["mediawiki.page.startup"]);
}
</script>
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-Operating_Systems_Compatibility action-view skin-monobook">
<div id="globalWrapper">
<div id="column-content"><div id="content">
	<a id="top"></a>
	
	<h1 id="firstHeading" class="firstHeading">Operating Systems Compatibility</h1>
	<div id="bodyContent">
		<div id="siteSub"></div>
		<div id="contentSub"></div>
		
		<!-- start content -->
<div lang="en" dir="ltr" class="mw-content-ltr"><p>This tutorial describes how to test operating systems for binary compatibility using the <a href="http://ispras.linuxbase.org/index.php/ABI_compliance_checker" title="ABI Compliance Checker">ABI Compliance Checker</a> tool. The tool is able to find all <b>C/C++</b> libraries and appropriate header files in system directories, create dump of system <b>ABI (API + compiler ABI)</b> including ABIs of all found libraries and then compare dumps created on different operating systems to produce the <a rel="nofollow" class="external text" href="http://upstream-tracker.org/compatibility/Maemo_4.1.2_to_Maemo_5.0/arm/abi_compat_report.html">HTML report</a> containing detailed comparison results.
</p>
<table id="toc" class="toc"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Setting_Up_Environment"><span class="tocnumber">1</span> <span class="toctext">Setting Up Environment</span></a>
<ul>
<li class="toclevel-2 tocsection-2"><a href="#Apt-based_OS_.28Ubuntu.2C_Debian.2C_Maemo.29"><span class="tocnumber">1.1</span> <span class="toctext">Apt-based OS (Ubuntu, Debian, Maemo)</span></a></li>
<li class="toclevel-2 tocsection-3"><a href="#Zypper-based_OS_.28Fedora.2C_openSUSE.2C_MeeGo.29"><span class="tocnumber">1.2</span> <span class="toctext">Zypper-based OS (Fedora, openSUSE, MeeGo)</span></a></li>
<li class="toclevel-2 tocsection-4"><a href="#Urpmi-based_OS_.28Mandriva.2C_ROSA.2C_Mageia.29"><span class="tocnumber">1.3</span> <span class="toctext">Urpmi-based OS (Mandriva, ROSA, Mageia)</span></a></li>
<li class="toclevel-2 tocsection-5"><a href="#Apk-based_OS_.28Alpine_Linux.29"><span class="tocnumber">1.4</span> <span class="toctext">Apk-based OS (Alpine Linux)</span></a></li>
<li class="toclevel-2 tocsection-6"><a href="#Other_Systems_.28Symbian.2C_Windows.29"><span class="tocnumber">1.5</span> <span class="toctext">Other Systems (Symbian, Windows)</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-7"><a href="#Dumping_System_ABI"><span class="tocnumber">2</span> <span class="toctext">Dumping System ABI</span></a></li>
<li class="toclevel-1 tocsection-8"><a href="#Compare_ABI_Dumps"><span class="tocnumber">3</span> <span class="toctext">Compare ABI Dumps</span></a></li>
<li class="toclevel-1 tocsection-9"><a href="#Examples"><span class="tocnumber">4</span> <span class="toctext">Examples</span></a></li>
</ul>
</td></tr></table>
<h2> <span class="mw-headline" id="Setting_Up_Environment"> Setting Up Environment </span></h2>
<p>The first step is to setup development environment on target operating systems:
</p>
<ul><li> Install G++, Perl, Binutils, Ctags and File utility
</li><li> Install all "devel" packages or SDK.
</li></ul>
<h3> <span class="mw-headline" id="Apt-based_OS_.28Ubuntu.2C_Debian.2C_Maemo.29"> Apt-based OS (Ubuntu, Debian, Maemo) </span></h3>
<p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;apt-get update&#160;</code><br /><br />
</p><p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;apt-cache search "\-dev"|awk '{print $1;}'&gt;install.txt&#160;</code><br /><br />
</p><p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;for i in `cat install.txt`;do sudo apt-get --force-yes -y install $i;done&#160;</code><br /><br />
</p><p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;sudo apt-get install gcc perl binutils file ctags&#160;</code><br /><br />
</p>
<h3> <span class="mw-headline" id="Zypper-based_OS_.28Fedora.2C_openSUSE.2C_MeeGo.29"> Zypper-based OS (Fedora, openSUSE, MeeGo) </span></h3>
<p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;zypper search -u dev|awk '{print $2;}'|grep "dev"&gt;install.txt&#160;</code><br /><br />
</p><p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;for i in `cat install.txt`;do sudo zypper -n install $i;done&#160;</code><br /><br />
</p><p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;sudo zypper install gcc-c++ perl binutils file ctags&#160;</code><br /><br />
</p>
<h3> <span class="mw-headline" id="Urpmi-based_OS_.28Mandriva.2C_ROSA.2C_Mageia.29"> Urpmi-based OS (Mandriva, ROSA, Mageia) </span></h3>
<p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;urpmq|grep "\-devel"&gt;install.txt&#160;</code><br /><br />
</p><p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;for i in `cat install.txt`;do sudo urpmi --auto --force $i;done&#160;</code><br /><br />
</p><p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;sudo urpmi install gcc-c++ perl binutils file ctags&#160;</code><br /><br />
</p>
<h3> <span class="mw-headline" id="Apk-based_OS_.28Alpine_Linux.29"> Apk-based OS (Alpine Linux) </span></h3>
<p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;apk update&#160;</code><br /><br />
</p><p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;apk search|grep "\-dev\-"|sed s/-dev-.*$/-dev/&gt;install.txt&#160;</code><br /><br />
</p><p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;for i in `cat install.txt`;do sudo apk add $i;done&#160;</code><br /><br />
</p><p>&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;sudo apk add perl&#160;</code><br /><br />
</p>
<h3> <span class="mw-headline" id="Other_Systems_.28Symbian.2C_Windows.29"> Other Systems (Symbian, Windows) </span></h3>
<p>Download and install the SDK.
</p>
<h2> <span class="mw-headline" id="Dumping_System_ABI"> Dumping System ABI </span></h2>
<p>The next step is to create an <a href="Descriptor.html" title="Operating System Descriptor">XML-descriptor</a> of target OS.
</p><p>Then enter to the target operating system and dump the system ABI using the following command:<br />
&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;abi-compliance-checker -dump-system <i>&lt;<a href="Descriptor.html" title="Operating System Descriptor">descriptor.xml</a>&gt;</i>&#160;</code><br /><br />
</p><p>If you want to analyze libraries from /usr/include and /usr/lib, then you may use the following short command instead:<br />
&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;abi-compliance-checker -dump-system <i>&lt;name&gt;</i> -sysroot /&#160;</code><br /><br />
</p><p>The system ABI dump will be generated to:<br />
&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;sys_dumps/<i>&lt;name&gt;</i>/&lt;arch&gt;/&#160;</code><br /><br />
</p><p>Repeat this step for other operating system or other version of the same system if you want to check backward compatibility.
</p>
<h2> <span class="mw-headline" id="Compare_ABI_Dumps"> Compare ABI Dumps </span></h2>
<p>The last step is to compare ABI dumps of two operating systems:<br />
&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;abi-compliance-checker -cmp-systems -d1 sys_dumps/<i>&lt;name1&gt;</i>/<i>&lt;arch&gt;</i> -d2 sys_dumps/<i>&lt;name2&gt;</i>/<i>&lt;arch&gt;</i>&#160;</code><br /><br />
</p><p>The compatibility report will be generated to:<br />
&#160;&#160;<code style="border: dashed 1px gray; background-color: #f0f0f0;">&#160;sys_compat_reports/<i>&lt;name1&gt;</i>_to_<i>&lt;name2&gt;</i>/&lt;arch&gt;/<a rel="nofollow" class="external text" href="http://upstream-tracker.org/compatibility/Maemo_4.1.2_to_Maemo_5.0/arm/abi_compat_report.html">abi_compat_report.html</a>&#160;</code><br /><br />
</p>
<h2> <span class="mw-headline" id="Examples"> Examples </span></h2>
<p>See examples for <b>Maemo</b>, <b>MeeGo</b> and <b>Symbian</b> operating systems on <a href="Examples.html" title="Operating Systems Compatibility Examples">this page</a>.
<br /><br />
</p>
<!-- 
NewPP limit report
Preprocessor node count: 54/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
Expensive parser function count: 0/100
-->

<!-- Saved in parser cache with key rasispdb:pcache:idhash:2655-0!*!0!!en!*!* and timestamp 20130805001517 -->
</div></div></div></div></div></body></html>