barus's diary

とても真面目なblogですにゃ

windows10でUbuntuを使えるようにして、g++でコンパイルしてHello!

 

■windows10でUbuntuを使えるようにする。


windowsの機能の有効化または無効化

windows」キーと「x」キーを同時押し、「設定」を選択

f:id:hatakeka:20170721211212p:plain ☜「windows」キー( ゚Д゚)

f:id:hatakeka:20170721205618p:plain

設定画面の検索で「windowsの機能の有効化または無効化」を検索

フル名で検索して出てこない場合は

”機能”とか、”有効化”とかの単語で検索してみて下さい。

f:id:hatakeka:20170721205746p:plain


 Windows Subsystem for Linux (Beta)を探し、

 チェックを入れます。

f:id:hatakeka:20170721194747p:plain

・再起動。
・開発者モードの有効化

同様に、設定画面の検索から「開発者向け」を検索する。

開発者向け画面で開発者モードにチェックする。

f:id:hatakeka:20170721191401p:plain

bashのインストー

windows」キーと「x」キーを同時押し、「ファイルを指定して実行」を選択

f:id:hatakeka:20170721191742p:plain

名前に cmd といれてOK

f:id:hatakeka:20170721191907p:plain

 

f:id:hatakeka:20170721191943p:plain

DOSコマンド画面にてbashを入力すると

bashのインストールが始まる。

 

■パッケージのアップデート

sudo apt update
sudo apt upgrade

 

GCCインストー

sudo apt install texlive-full


■ホームディレクトリの変更方法

cドライブにhomeするのはお勧めできません。

外部HDDをhomeにしておくのが無難です。

DOSコマンドの場合

cd /d s:\

と/dオプションで別ドライブに移動できます。

f:id:hatakeka:20170721192230p:plain

ubuntuの場合

DOSコマンドプロンプトからbashubuntuに切り替えて

ls /mnt/にてドライブ名の確認ができる。

f:id:hatakeka:20170721192438p:plain

ここで少しUNIX(ubuntu)のコマンド紹介

ls       ディレクトリのファイル、フォルダ表示

cd      ディレクトリの移動

pwd     現在のディレクトリの場所表示

cat       ファイルの中身表示

 

その他にコマンドはありますのでググってみて下さい。

 

sudo vi /etc/passwd

viは、UNIX環境におけるファイル編集エディタ。

(※ここは、viを使わずにwindowsのメモ帳使って編集しても

 構わないと思います。)

 

sudoは、スーパーユーザー(管理者)で編集する。

パスワードは、bashをインストールした際のパスワード入れる。 

 

viの主なコマンド

:q   終了

:wq  上書き保存

:q!  強制終了

i     挿入

dd  行削除

yy   行コピー

p    貼り付け

u          やり直し

x          一文字削除

それぞれのコマンド打つ際には、ESCキーを押す癖を。

とりあえず困ったら、ESCキー( ゚Д゚)

 

f:id:hatakeka:20170721185656p:plain

username:x:1000:1000:"",,,:/home/username:/bin/bash

の行を私の場合は以下のように変更。

(※usernameはbashインストール時のusernameとなります。)

sfuku:x:1000:1000:"",,,:/mnt/s/plog/ubuntu/home:/bin/bash

f:id:hatakeka:20170721185733p:plain

ここで、bashを終了する前に、元のホームディレクトリにあった設定ファイルを新しい
ホームディレクトリにコピーする必要があります。

cd ~
cp -p .* /mnt/s/plog/ubuntu/home

 

DOSコマンドから

bash ~

にてubunstu切り替えて、カレントディレクトリの確認

f:id:hatakeka:20170721194203p:plain

 

 

■g++でコンパイルしてHello!

とりあえず、定番のHello表示。

ファイル名をhello.cppとした。

ついでに、stdが使えるか確認。

 

viで編集せずとも、メモ帳開いて編集出来ます。

notepad.exe hello.cpp

f:id:hatakeka:20170721203606p:plain

viで編集し、notepad.exe(メモ帳)で開いたら以下のようになっている。

f:id:hatakeka:20170721203712p:plain

これはUNIXubuntu)環境とwindows環境の改行コードが異なるため。

詳しくはググってみて下さい。

 

 

hello.cpp

の中身は cat コマンドにて以下の方に示したのでコピーしてみて下さい。

コンパイル

g++ hello.cpp

実行はコンパイル時にファイル名が指定されていなければ

./a.out

が作成されていますので、これを実行する。

 

sfuku@DESKTOP-AIHI2B4:~$ vi hello.cpp
sfuku@DESKTOP-AIHI2B4:~$ cat hello.cpp
#include <stdio.h>
#include <vector>
#include <iostream>

using namespace std;

struct USER
{
string name;
int age;
};

int main(int argc, char** argv){

vector<USER> users;

for(;;)
{
USER user;
cout << "qで終了" << endl;
cout << "name : " << endl;
cin >> user.name;
if(user.name == "q")break;
cout << "age : " << endl;
cin >> user.age;
users.push_back(user);
}

for(int i=0; users.size()>i; i++)
{
printf("hello %s(%d)\n", users[i].name.c_str(), users[i].age );
}

return 0;

}
sfuku@DESKTOP-AIHI2B4:~$
sfuku@DESKTOP-AIHI2B4:~$
sfuku@DESKTOP-AIHI2B4:~$ g++ hello.cpp
sfuku@DESKTOP-AIHI2B4:~$ ./a.out
qで終了
name :
太郎
age :
44
qで終了
name :
こええええ
age :
22
qで終了
name :
q
hello 太郎(44)
hello こええええ(22)
sfuku@DESKTOP-AIHI2B4:~$

f:id:hatakeka:20170721190833p:plain

 

■シェルの確認

ちょっとした確認したい場合にコマンドからシェルを使えると便利。

なので、for文などが使えるか確認。

 

sfuku@DESKTOP-AIHI2B4:~$ s1="." ; for l in `ls -1 $s1`; do t=`date`; echo "$l"; done
a.out
hello.cpp

f:id:hatakeka:20170721193104p:plain

 

Windowsの実行形式(dir)等も使えるみたいだ。

s1="." ; for l in `dir $s1`; do t=`date`; echo "$l"; done

f:id:hatakeka:20170721200832p:plain

 

 ■環境をアンインストールする場合

lxrun /uninstall /full

lxrun /install

 

 

以上です。 

 

 

参考

Bash on Ubuntu on Windowsをインストールしてみよう! - Qiita