どーも。ゼロです。
今日はタイトルにある通り、C言語の開発をしようとして仮想マシンが一時使えなくなりかけ、復旧するまでの過程を紹介します。
経緯
VirtualBoxのアプデでローカル開発環境が一時使用不能に。。。
これは私の勘違いだったのでことなきを得たんですが、一回仮想サーバを最初から立ち上げたので復旧までに時間を要するハメに。
検索してもあまりいいソースがなかったので自分の記録も兼ねてここに残すことにしました。
補足事項
C言語は大学で履修しているのですが、講義の使用ソフトがWindows専用なのでローカル開発環境を作ってPHPと同じ環境でやることにしました。
開発環境
OS:macOS Mojave(10.14.5)
VirtualBox 6.0.8
Cyberduck 7.0.1
復旧までの道のり
文章で書くと長くなりそうなのでコードを貼ります
前提環境はこんな感じ。
zer0sMBP:~ zer0$ cd MyVagrant/
zer0sMBP:MyVagrant zer0$ cd MyCentOS/
zer0sMBP:MyCentOS zer0$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'bento/centos-6.8' version '2.3.4' is up to date...
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
[vagrant@localhost ~]$ cd c_lessons/
[vagrant@localhost c_lessons]$ ls
hello hello.c
[vagrant@localhost c_lessons]$
コードの解説
今回は、こちらのサイトを参考に開発環境を整えました。
無事にvagrant sshまでは行きました。
そして今回はc_lessonsというフォルダにhello.cというファイルを作成しています。
それが上記のコードの下から3番目です。
コンパイルできているのでlsで中身を見ると、hello hello.cというふたつのファイルがありますね。
コンパイル成功してHello Worldまでの道のり
C言語はJavaScriptなどと違いコンパイル言語なのでコンパイルという作業が必要です。
簡単に言えば、コードをコンピュータが読める言葉に変えることですね。
コンパイルといえばgcc
ただ、これをインストールする必要がある。。
ちなみに私はコードを書いて、コンパイルする時にコマンドを打って実行してエラーが出るまでインストールしていないことに気づかなかった。
こんなことがないようにして頂きたいです。
話のメイン部分ではないので、今回は参考になったサイトのみを紹介します。
参考サイト
少し補足
上の記事の中にMore Downloads for Apple DevelopersにアクセスしてコマンドラインコンテンツをDLするのだが、下のベータ版ではない方をインストールして開こうとしたらイメージが対応していないというエラーが出たので私はベータ版を入れました。
問題発生
コマンドラインの環境も揃いこれでコンパイルできると思ったら出来ませんでした。。。
gcc コマンドが見つかりませんのエラーが出てきました。。。
あれ?
gccのバージョン確認をするとちゃんとバージョンが出るんですがね。
ググってみると、yumコマンドでgccがインストールされるらしいのでこれをやってみることに。
自分はCentOSだったのでこれをやりましたが、他のものを使っている方は違うかもしれないのでご注意ください。
yum -y install gcc
まずこのコマンドを打つのですがあれ?
root権限じゃないと使えないみたいなエラーが出ました。。。
今まではuser権限だったんですよね。
root権限全ての仕様変更が可能になります。割とこれ使い方に気をつけないとヤバいみたいです。
root権限にするのはこんな感じでできます。
[vagrant@localhost c_lessons]$ su - root
パスワード:
[root@localhost ~]#
パスワードを入れればシャープがつきます。パスワードは表示されないので注意
これで
yum -y install gcc
このコマンドを打って、Complete!が表示されたら完了
root権限終了はexitで終了できます。
これでコンパイルできますね〜
[vagrant@localhost ~]$ cd c_lessons/
[vagrant@localhost c_lessons]$ gcc -o hello hello.c
[vagrant@localhost c_lessons]$ ./hello
Hello World
Hi! zer0
[vagrant@localhost c_lessons]$
これで完了ですね〜!
めっちゃ嬉しいですよね。この瞬間って。
ソースは少なかったですが、パーツごとにググってここまでできたのでいい経験になったと思います。
この記事が誰かの参考になったら嬉しいです。