web-dev-qa-db-ja.com

Linux用Windowsサブシステムにg ++をインストールする

しばらく前、自分のマシンでLinux用のWindowsサブシステムをアクティブにしましたが、あまり使用しませんでした。今、私はそれを何に使うことができるかアイデアを持っているので、WSCにgcc/++ 7をインストールして問題が発生し続けている理由です。

私のアイデアは、 ダウンロード itで、 このガイド に従って手動でコンパイルすることでした:

../gcc/configure -v --build=x86_64-linux-gnu --Host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=${HOME}/software/gcc-7.3.0/installDir --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib

これにより、次のエラーが発生しました。

checking build system type... x86_64-pc-linux-gnu
checking Host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking LIBRARY_PATH variable... ok
checking GCC_EXEC_PREFIX variable... ok
checking whether to place generated files in the source directory... no
checking whether a default linker was specified... no
checking whether a default assembler was specified... no
checking for x86_64-linux-gnu-gcc... no
checking for gcc... no
checking for x86_64-linux-gnu-cc... no
checking for cc... no
checking for x86_64-linux-gnu-cl.exe... no
checking for cl.exe... no
configure: error: in `$HOME/software/gcc-7.3.0/build':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.

どうやら、gccはまったくインストールされていなかったようです。少なくともgccおよびccは「command not found」を生成しました。それで私の次のステップは、以下を介してgccをインストールすることでした。

Sudo apt install gcc

これは働いた:

$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4 
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

しかし、上記のconfigureコマンドを試してみると、次のようになりました:

checking build system type... x86_64-pc-linux-gnu
checking Host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu 
checking LIBRARY_PATH variable... ok
checking GCC_EXEC_PREFIX variable... ok
checking whether to place generated files in the source directory... no
checking whether a default linker was specified... no
checking whether a default assembler was specified... no
checking for x86_64-linux-gnu-gcc... x86_64-linux-gnu-gcc
checking for C compiler default output file name...
configure: error: in `/home/seriously-ubuntu/software/gcc-7.3.0/build':
configure: error: C compiler cannot create executables
see `config.log' for more details.

だから私は手で簡単なCプログラムをコンパイルしようとしました:

int main() {
    return 42;
}

これは、何かが真剣に壊れているように見えることを示唆しています

$ gcc foo.c
/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find crtn.o: No such file or directory
collect2: error: ld returned 1 exit status

私がこれを修復し始めることができるアイデアはありますか?これが役立つのであれば、WSL全体をリセットしても構いません:/

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:        16.04
Codename:       xenial

UPDATE:

このすべての前に、私は成功せずにaptを介してgcc7/g ++ /をインストールしようとしました:

$ Sudo add-apt-repository ppa:jonathonf/gcc-7.1
$ Sudo apt-get update
$ Sudo apt-get install gcc-7 g++-7
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
g++-7 : Depends: libstdc++-7-dev (= 7.1.0-10ubuntu1~16.04.york0) but it is not going to be installed
        Depends: libisl15 (>= 0.15) but it is not installable 
gcc-7 : Depends: cpp-7 (= 7.1.0-10ubuntu1~16.04.york0) but it is not going to be installed
        Depends: binutils (>= 2.26.1) but 2.24-5ubuntu14.2 is to be installed
        Depends: libisl15 (>= 0.15) but it is not installable
        Recommends: libc6-dev (>= 2.13-0ubuntu6) but it is not going to be installed
E: Unable to correct problems, you have held broken packages

更新2

残念ながら、提案された方法はどれも役に立たなかったため、WSLを無効にしました。どうやら、より深刻な何かが壊れていた。

7
Seriously

コンパイルする理由パッケージをインストールできるはずです。

Sudo add-apt-repository ppa:ubuntu-toolchain-r/test
Sudo apt update
Sudo apt install g++-7 -y

次を使用して確認します。

gcc-7 --version

gcc-7またはclang 4.0のインストール方法を参照してください?

6
Suma

以下を実行します

Sudo apt install aptitude
Sudo aptitude install gcc-7 g++-7

または

Sudo apt install aptitude && Sudo aptitude install golang gcc-7 g++-7
2
JosephWorks

_crt1.o_は通常、libdevc依存関係(または同様のもの)の一部として提供されます。 _Sudo apt search libc_または_lib6c_、libdev、_libc-dev_などを使用して同様のバリアントを実行することをお勧めします。これらをインストールすると、最近発生した同様の問題が修正されました。

それに失敗したら、_find / -iname ctri.o_を実行し、_export PATH="[folder]:$PATH"_でPATHに表示されるフォルダーを追加し、それが役立つかどうかを確認します。

1
BlueDrink9