Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/04/2015, à 21:33

meyus

VMplayer et ubuntu 15.04 : Erreur de compilation Solution en Français

La solution proposait par le lien :
http://askubuntu.com/questions/613187/v … how-to-fix

n'est pas très clair pour tout le monde je pense, je vais le refaire à "ma sauce"

Alors :

1er étape : Créer un répertoire temporaire, ici, je nomme "Tmp", vous pouvez utiliser un autre nom mais faudra remplacer Tmp par le nom que vous avez choisi :
Donc, ouvrir un terminal :

Taper les commandes :

mkdir Tmp
cd Tmp
cp /usr/lib/vmware/modules/source/vmnet.tar .
tar -xvf vmnet.tar

Ensuite il faut créer un fichier qui va "corriger" (créer un patch)
Ouvrir un fichier dans Tmp que j'appelle ici "correction". Recopiez le code dans le fichier "correction"  puis enregistrez.

diff --git a/driver.c b/driver.c
index 2e1e643..507a509 100644
--- a/driver.c
+++ b/driver.c
@@ -266,7 +266,7 @@ LinuxDriver_Ioctl32_Handler(unsigned int fd,     // IN: (unused)
    int ret = -ENOTTY;

    if (filp && filp->f_op && filp->f_op->ioctl == VNetFileOpIoctl) {
-      ret = VNetFileOpIoctl(filp->f_dentry->d_inode, filp, iocmd, ioarg);
+      ret = VNetFileOpIoctl(filp->f_path.dentry->d_inode, filp, iocmd, ioarg);
    }
    return ret;
 }
@@ -1191,8 +1191,8 @@ VNetFileOpUnlockedIoctl(struct file    *filp,  // IN:
    struct inode *inode = NULL;
    long err;

-   if (filp && filp->f_dentry) {
-      inode = filp->f_dentry->d_inode;
+   if (filp && filp->f_path.dentry) {
+      inode = filp->f_path.dentry->d_inode;
    }
    err = VNetFileOpIoctl(inode, filp, iocmd, ioarg);
    return err;
diff --git a/userif.c b/userif.c
index e68d4ce..b311f48 100644
--- a/userif.c
+++ b/userif.c
@@ -523,7 +523,9 @@ VNetCopyDatagram(const struct sk_buff *skb, // IN: skb to copy
       .iov_base = buf,
       .iov_len  = len,
    };
-   return skb_copy_datagram_iovec(skb, 0, &iov, len);
+   struct iov_iter to;
+   iov_iter_init(&to, READ, &iov, 1, len);
+   return skb_copy_datagram_iter(skb, 0, &to, len);
 }

Ensuite, toujours dans le terminal et dans le répertoire Tmp, tapez la commande suivante:

cd vmnet-only  && patch -p1 <../correction && cd ..

la correction a été appliquée à "vmnet", maintenant on va remplacer le "vmnet" original (dans /usr/lib/vmware/modules/source/) par le vmnet que nous venons de modifier.
Toujours dans le terminal et dans le répertoire "Tmp" :

sudo tar cf /usr/lib/vmware/modules/source/vmnet.tar vmnet-only

Relancer VMplayer, il vous demande de recompiler alors allez-y smile et normalement ça marche.

Attention, l'archive vmnet.tar dans le repertoire Tmp est celui non modifié, par sécurité, sauvegardez-le quelque part. Mais si vous "vous en foutez", vous pouvez le supprimer.
Après avoir sauvegardé vmnet.tar quelque part, vous pouvez effacer le répertoire Tmp.
Dans le terminal, si vous êtes toujours dans Tmp:

cd ..
rm -rf Tmp

Bon, j'espère que cela est clair...

A+,

Meyus.

Dernière modification par meyus (Le 30/04/2015, à 10:25)

Hors ligne