AnglaisFrançaisEspagnol

Icône de favori OnWorks

abicompat - En ligne dans le Cloud

Exécutez abicompat dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande abicompat qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


abicompat - vérifier la compatibilité ABI

abicompat vérifie qu'une application qui se lie à une bibliothèque partagée donnée est toujours
ABI compatible avec une version ultérieure de cette bibliothèque. Si la nouvelle version du
la bibliothèque introduit une incompatibilité ABI, puis abicompat indique à l'utilisateur ce qu'exactement
cette incompatibilité est.

INVOCATION


abicompat [options] [ ]

OPTIONS


· --Aidez-moi

Affichez une courte aide sur la commande et quittez.

· --version | -v

Affichez la version du programme et quittez.

· --list-symboles-non définis | -u

Affichez la liste des symboles non définis de l'application et quittez.

· --show-base-names | -b

Dans le rapport résultant émis par l'outil, cette option rend l'application et
les bibliothèques ne doivent être désignées que par leur nom de base ; pas par un nom absolu complet. Cette
peut être utile pour une utilisation dans des scripts qui veulent comparer les noms de l'application et
bibliothèques indépendamment de leurs noms de répertoire.

· --app-debug-info-dir

Définissez le chemin d'accès au répertoire sous lequel les informations de débogage de l'application sont
censé être disposé. Ceci est utile pour les binaires d'application pour lesquels le débogage
info est dans un ensemble séparé de fichiers.

· --lib-debug-info-dir1

Définissez le chemin d'accès au répertoire sous lequel les informations de débogage de la première version
de la bibliothèque partagée est censé être aménagé. Ceci est utile pour la bibliothèque partagée
binaires pour lesquels les informations de débogage se trouvent dans un ensemble de fichiers distinct.

· --lib-debug-info-dir2

Définissez le chemin d'accès au répertoire sous lequel les informations de débogage de la deuxième version
de la bibliothèque partagée est censé être aménagé. Ceci est utile pour la bibliothèque partagée
binaires pour lesquels les informations de débogage se trouvent dans un ensemble de fichiers distinct.

· --no-show-locs
Ne pas afficher d'informations sur l'emplacement dans le seconde commun bibliothèque le respectif
type a été modifié.

· --faible-mode

Cela déclenche le mode faible de abimé. Dans ce mode, une seule version du
bibliothèque est nécessaire. Autrement dit, abicompat est invoqué comme ceci :

abicompat --weak-mode

Notez que le --faible-mode L'option peut même être omise si une seule version du
la bibliothèque est fournie avec l'application ; dans ce cas, abimé automatiquement
commutateurs pour fonctionner en mode faible :

abimé

Dans ce mode faible, les types de fonctions et variables exportées par la bibliothèque et
consommés par l'application (comme dans, les symboles de ces fonctions et variables
ne sont pas définis dans l'application et sont définis et exportés par la bibliothèque) sont
par rapport à la version de ces types comme prévu par l'application. Et si ces
deux versions de types sont différentes, abimé indique à l'utilisateur quelles sont les différences
sont.

En d'autres termes, dans ce mode, abimé vérifie que les types des fonctions et
les variables exportées par la bibliothèque signifient la même chose que ce que l'application
attend, en ce qui concerne l'ABI.

Notez que dans ce mode, abimé ne détecte pas les fonctions ou variables exportées
(symboles) attendus par l'application mais supprimés de la bibliothèque.
C'est pourquoi on l'appelle faible mode.

RETOUR VALEURS


Le code de sortie du abimé commande est soit 0 si l'ABI des binaires étant
comparés sont égaux, ou non nuls s'ils diffèrent ou si l'outil a rencontré une erreur.

Dans ce dernier cas, le code de sortie est un champ de bits de 8 bits dans lequel chaque bit a un
sens spécifique.

Le premier bit, de valeur 1, nommé ABIDIFF_ERROR signifie qu'il y a eu une erreur.

Le deuxième bit, de valeur 2, nommé ABIDIFF_USAGE_ERROR signifie qu'il y a eu une erreur dans le chemin
l'utilisateur a invoqué l'outil. Il peut être défini, par exemple, si l'utilisateur a invoqué l'outil
avec un commutateur de ligne de commande inconnu, avec un numéro ou un argument erroné, etc. Si ce bit est
réglé, puis le ABIDIFF_ERROR bit doit également être défini.

Le troisième bit, de valeur 4, nommé ABIDIFF_ABI_CHANGE signifie l'ABI des binaires étant
comparés sont différents.

Le quatrième bit, de valeur 8, nommé ABIDIFF_ABI_INCOMPATIBLE_CHANGE désigne l'ABI du
les binaires comparés sont différents d'une manière incompatible. Si ce bit est défini, alors le
ABIDIFF_ABI_CHANGE bit doit également être défini. Si la ABIDIFF_ABI_CHANGE est réglé et le
ABIDIFF_INCOMPATIBLE_CHANGE is ne pas défini, cela signifie que les ABI comparés pourraient
ou peut ne pas être compatible. Dans ce cas, un être humain doit revoir les modifications de l'ABI
pour décider s'ils sont compatibles ou non.

Les bits restants ne sont pas utilisés pour le moment.

UTILISATION EXEMPLES


· Détection d'une éventuelle incompatibilité ABI dans une nouvelle version de bibliothèque partagée :

$ chat -n test0.h
1 structure foo
2 {
3 m0 int;
4
5 truc()
6 : m0()
sept {}
8} ;
9
10 pieds*
11 first_func();
12
13 nul
14 second_func(foo&);
15
16 nul
17 troisième_func();
$

$ cat -n test-app.cc
1 // Compiler avec :
2 // g++ -g -Wall -o test-app -L. -ltest-0 test-app.cc
3
4 #include "test0.h"
5
6 entier
7 principaux()
8 {
9 foo* f = first_func();
10 seconde_func(*f);
11 retour 0;
12}
$

$ chat -n test0.cc
1 // Compilez ceci avec :
2 // g++ -g -Wall -shared -o libtest-0.so test0.cc
3
4 #include "test0.h"
5
6 pieds*
7 first_func()
8 {
9 truc* f = nouveau truc();
10 retour f;
11}
12
13 nul
14 second_func(foo&)
15 {
16}
17
18 nul
19 troisième_func()
20 {
21}
$

$ chat -n test1.h
1 structure foo
2 {
3 m0 int;
4 caractères m1 ; /* <-- un nouveau membre a été ajouté ici ! */
5
6 truc()
7 : m0(),
8m1()
sept {}
10} ;
11
12 pieds*
13 first_func();
14
15 nul
16 second_func(foo&);
17
18 nul
19 troisième_func();
$

$ chat -n test1.cc
1 // Compilez ceci avec :
2 // g++ -g -Wall -shared -o libtest-1.so test1.cc
3
4 #include "test1.h"
5
6 pieds*
7 first_func()
8 {
9 truc* f = nouveau truc();
10 retour f;
11}
12
13 nul
14 second_func(foo&)
15 {
16}
17
18 /* Commentons la définition de third_func()
19 nul
20 troisième_func()
21 {
22}
23*/
$

· Compiler les première et deuxième versions des bibliothèques : libtest-0.so et
libtest-1.so:

$ g++ -g -Wall -shared -o libtest-0.so test0.cc
$ g++ -g -Wall -shared -o libtest-1.so test1.cc

· Compiler l'application et la lier à la première version de la bibliothèque,
créer le application de test binaire:

$ g++ -g -Wall -o test-app -L. -ltest-0.so test-app.cc

· Maintenant, utilisez abimé pour voir si libtest-1.so est compatible ABI avec l'application, avec respect
à l'ABI de libtest-0.so :

$ abicompat test-app libtest-0.so libtest-1.so
Le fichier ELF 'test-app' peut ne pas être compatible ABI avec 'libtest-1.so' en raison des différences avec 'libtest-0.so' ci-dessous :
Résumé des modifications des fonctions : 0 Supprimé, 2 Modifié, 0 Fonctions ajoutées
Récapitulatif des modifications des variables : 0 Supprimé, 0 Modifié, 0 Variable ajoutée

2 fonctions avec un changement de sous-type indirect :

[C]'function foo* first_func()' a quelques changements de sous-type indirects :
type de retour modifié :
dans pointé pour taper 'struct foo' :
taille changée de 32 à 64 bits
1 insertion de membre de données :
'char foo::m1', à l'offset 32 ​​(en bits)
[C]'function void second_func(foo&)' a quelques changements de sous-type indirects :
le paramètre 0 de type 'foo&' a des changements de sous-type :
le type référencé 'struct foo' a changé, comme indiqué précédemment

$

· Utilisez maintenant le mode faible d'abicompat, c'est-à-dire ne fournissant que l'application et le
nouvelle version de la bibliothèque :

$ abicompat --weak-mode test-app libtest-1.so
fonctions définies dans la bibliothèque
'libtest-1.so'
ont des sous-types qui sont différents de quelle application
'test-app'
attend :

fonction foo* first_func() :
type de retour modifié :
dans pointé pour taper 'struct foo' :
taille changée de 32 à 64 bits
1 insertion de membre de données :
'char foo::m1', à l'offset 32 ​​(en bits)

$

Utilisez abicompat en ligne en utilisant les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

  • 1
    Alt+F
    Alt+F
    Alt-F fournit une source libre et ouverte
    firmware alternatif pour le DLINK
    DNS-320/320L/321/323/325/327L and
    DNR-322L. Alt-F a Samba et NFS ;
    prend en charge ext2/3/4...
    Télécharger Alt-F
  • 2
    usm
    usm
    Usm est un package slackware unifié
    gestionnaire qui gère automatique
    résolution de dépendance. Il unifie
    divers référentiels de packages, y compris
    slackware, slacky, p...
    Télécharger usm
  • 3
    Chart.js
    Chart.js
    Chart.js est une bibliothèque Javascript qui
    permet aux concepteurs et aux développeurs de dessiner
    toutes sortes de graphiques utilisant le HTML5
    élément de toile. Chart js offre un excellent
    déployer ...
    Télécharger Chart.js
  • 4
    iReport-Designer pour JasperReports
    iReport-Designer pour JasperReports
    REMARQUE : Prise en charge d'iReport/Jaspersoft Studio
    Annonce : Depuis la version 5.5.0,
    Jaspersoft Studio sera l'officiel
    client de conception pour JasperReports. iRapport
    volonté...
    Télécharger iReport-Designer pour JasperReports
  • 5
    PostInstallerF
    PostInstallerF
    PostInstallerF installera tous les
    logiciels que Fedora Linux et d'autres
    n'inclut pas par défaut, après
    exécutant Fedora pour la première fois. Son
    facile pour...
    Télécharger PostInstallerF
  • 6
    strass
    strass
    Le projet strace a été déplacé vers
    https://strace.io. strace is a
    diagnostic, débogage et instruction
    traceur d'espace utilisateur pour Linux. C'est utilisé
    surveiller un...
    Télécharger
  • Plus "

Commandes Linux

Ad