web-dev-qa-db-ja.com

VMwareカーネルモジュール:互換性のあるバージョンのgccが見つかりませんでした

VMwareカーネルモジュールアップデーターを実行すると、次のメッセージが表示されます。

A compatible version of gcc was not found.

VMwareカーネルモジュールをコンパイルするようにGCCを設定するにはどうすればよいですか?

enter image description here

enter image description here

4
bader alzhrani

これで問題が解決することを願っています。

Kaliを最新の4.8.0-kali1-AMD64にアップグレードします。

cd /usr/lib/vmware/modules/source

tar xf vmmon.tar

tar xf vmnet.tar

cd vmmon-only

make

cd ../vmnet-only

make

cd ..

mkdir /lib/modules/`uname -r`/misc

cp vmmon.o /lib/modules/`uname -r`/misc/vmmon.ko

cp vmnet.o /lib/modules/`uname -r`/misc/vmnet.ko

depmod -a

/etc/init.d/vmware restart

Kaliの新しいビルドがあるたびに、これらの手順を再度実行する必要があります。

これには、基本的な開発ツールとライブラリをインストールする必要があります。 Debian派生(Ubuntu/Mint/Kali)を使用しているか、Red Hatベースのシステム(RHEL/CentOS)を使用しているかによって、インストールするコマンドは異なります。

Debianベース

apt-get install build-essential

Red Hatベース

yum groupinstall 'Development Tools'

補足として、VMwareツールと同じ機能を提供するopen-vm-toolsと呼ばれるパッケージがありますが、完全にオープンソースであり、より適切にサポートされています。

3
Tim Fletcher

Kali Linux Rolling Editionを使用している場合は、gcc-5にある/usr/binを参照して選択するか、場所フィールドに/usr/bin/gcc-5と入力して[インストール]を押します。

2
Eduardo Orenes

以前のカーネルでは機能していたOgheneneovie Ralph Otutuがその答えに従いましたが、新しいカーネルでは機能しないようです。いくつかのエラーが発生したとき、カーネルvmware 12.5.94.15.0-kali3-AMD64のモジュールをコンパイルしようとしていました。

/usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:関数 'LinuxDriverInitTSCkHz':
/usr/lib/vmware/modules/source/vmmon- only/linux/driver.c:268:22:エラー:互換性のないポインター型からの割り当て[-Werror = incompatible-pointer-types] 
 tscTimer.function = LinuxDriverEstimateTSCkHzDeferred; 
 ^ 
 /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:270:12:エラー: 'struct timer_list'には 'data'という名前のメンバーがありません
 tscTimer.data = 0; 
 ^ 
/usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:関数 'init_module':
/usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:312:4:エラー:関数 'init_timer'の暗黙の宣言; 「init_timers」という意味ですか? [-Werror = implicit-function-declaration] 
 init_timer(&linuxState.pollTimer); 
 ^ ~~~~~~~~~ 
 ... 

どうやらLinuxカーネルの変更により、VMwareモジュールのソースに互換性がなくなりました。

これを機能させるために、私のバージョンのVMware用にパッチを当てたソースファイルを https://github.com/mkubecek/vmware-Host-modules/branches からダウンロードし、Ogheneneovie Ralphの説明と同じ手順に従いましたOtutu、すなわち:

 cd /usr/lib/vmware/modules/source

wget https://github.com/mkubecek/vmware-Host-modules/archive/player-12.5.9 .Zip 
 
 unzip player-12.5.9.Zip 
 
 cd vmware-Host-modules-player-12.5.9/vmmon-only /
 
 make 
 
 cd ../vmnet-only/

make

cd .. 
 
 mkdir/lib/modules/`uname -r`/misc 
 
 cp vmmon.o/lib/modules /` uname -r`/misc/vmmon.ko 
 
 cp vmnet.o/lib/modules/`uname -r`/misc/vmnet.ko 
 
 depmod -a 
 
/etc/init.d/vmware restart 
 
2
Onderbetaald

おそらくgccがインストールされていません。

ちょうどこれを試してください:

gcc --version

おそらく、gccコマンドがインストールされていないか、そのようなものになります。

解決?シンプル!

apt-get update
apt-get install gcc

Gccがない場合は、makeもインストールされていないという良い変更があります。

apt-get install make

その後、VMwareツールのインストールを再実行します。

1
borbar

これは非常に厄介なハックですが、ここに私がGCCの必要なバージョン(この場合は8.3.1)を取得するために行ったことを示します。現在9.xがインストールされているFedora 30を使用しています。これはrightの方法ではないと確信していますが、適切なバージョンのGCCを取得するためのより良い方法を知りませんでした。

  1. Dockerを使用してFedora 29の新しいコンテナーを開始しました:docker run --rm -it Fedora:29 bash
  2. 必要なGCCツールをコンテナ内にインストールしました:dnf install @development-tools
  3. GCCのインストールをマシンのフォルダーにコピーしました:docker cp {containerid}:/usr/ {some_folder_on_my_machine}。実行中のコンテナをdocker ps -aで確認して、コンテナIDを見つけることができます。これは、Sudoで行う必要がある場合があります。
  4. Sudoを使用する必要があった場合は、新しくコピーしたフォルダーSudo chown -R {user}:{user} {the_folder}の所有権を取得します
  5. コピーしたフォルダにVMwareをポイントします。例:{the_folder}/bin/gcc
0
jocull