2
1

More than 5 years have passed since last update.

Ubuntuの共有パーティション(fat32)にあるC, C++プログラムを実行できるようにしよう

Posted at

はじめに

僕のPCではデュアルブートしていて、両OSでデータが共有できるように共有パーティションを作ってあります。

この共有パーティションはfat32というファイルシステムですが、このファイルシステム上では権限関連の概念がないらしいです。

したがって、C/C++の環境構築をした際にエラーが起こりました。

(この記事内でも言及しました。)

本記事では、このエラーの解決方法を説明していきます。

前提環境

  • Ubuntu 18.04.2 LTS
  • コンパイルした後のファイルを実行できる環境(この記事内参照)

具体的なエラー内容

この記事内で、コンパイルした後のファイルの実行ができませんでした。

$ gcc -o hello hello.c && ./hello
bash: ./hello: 許可がありません
$ g++ -o hello hello.cpp && ./hello
bash: ./hello: 許可がありません

1-1.png

エラー原因

そもそも、fat32では実行権限が付与できないらしいことがわかりました。(参考サイト)

実際にファイルの実行権限をGUIで確認してみると、以下のように付与してもリセットされてしまいました。

1-1.gif

解決方法

今回は、fat32じゃないシステム上に実行ファイルを作成し、それを実行するようにします。

以下のコマンドで、ubuntuのシステムに実行ファイルだけ保存し、それを実行するようにしています。

$ gcc -o /home/nsd/ドキュメント/hello hello.c && /home/nsd/ドキュメント/hello
$ g++ -o /home/nsd/ドキュメント/hello hello.cpp && /home/nsd/ドキュメント/hello

しかし、毎回これをやるのは非常にめんどくさいので、シェルスクリプトを書いて任意のコマンドを実行すると一気にコンパイルから実行までしてくれるようにやってみます。

C.sh
#!/bin/bash
gcc -o /home/nsd/ドキュメント/c-file $1 && /home/nsd/ドキュメント/c-file
C++.sh
#!/bin/bash
g++ -o /home/nsd/ドキュメント/c++-file $1 && /home/nsd/ドキュメント/c++-file

パスは、fat32じゃないとこならどこでもいいです。

そして、コマンドとして実行できるようにします。

僕はC.shとC++.shを/home/nsd/ドキュメントの直下に置きました。

そして、このファイルをおいた場所でターミナルを開き、以下のコマンドを実行します。

$ sudo cp C.sh /bin/C-command
$ sudo cp C++.sh /bin/C++-command

このコマンドで、C-command ファイル名, C++-command ファイル名と打つことでどこからでもC/C++のファイルがコンパイルし実行できるようになりました!(コマンド名は何でもいいので好きにつけてもらってOKです。)

1-2.png

実際に以前書いた記事でのHelloWorldのプログラムを実行してみます。

$ C-command hello.c

$ C++-command hello.cpp

1-3.png

これで無事、fat32上にあるC/C++プログラムのコンパイル・実行が手軽にできるようになったと思います!

※もしこれで許可がないって出たら、/binに飛んで

$ sudo chmod +x C-command
$ sudo chmod +x C++-command

で実行権限付与してからもっかいやってみてください。

まとめ

この記事では、fat32上にあるC/C++プログラムを、シェルスクリプトを使って簡単にコンパイル・実行できるようにしました。

他のコンパイラ言語でも同様のことが起きると思うので、他の言語でもまた書いていこうと思います!

環境構築の方法自体はこの記事で書いたので、そちらの方をチェックお願いします!

参考文献

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1