eyecatch thumbnail

MacOS で c++ プログラムが実行できないのは depot_tools が原因かも

Profile picture
ルッチ / Lucci
2020.12.06

Contents


はじめに

c++ プログラムをコンパイルして実行しようとしたら想定外のエラーが出て困惑している人向けの記事です.

次のようなエラーメッセージが出力されていて途方にくれていませんか?

$ ./hello
zsh: permission denied: ./hello

$ ./hello
zsh: exec format error: ./hello

その原因,もしかしたら depot_tools にパスが通っていることが原因かもしれません.

本記事では,このような問題に対する解決方法を提示します.

お困りの方,発狂せずにこの記事を読んでください.

さぁ,深呼吸,深呼吸.


エラーメッセージは permission denied もしくは exec format error ですか

たぶん,いつものように何気なく g++ コマンド叩いて c++ プログラムをコンパイルしましたよね?

$ g++ -g -o hello -c hello.cc

コンパイルしたから実行しよー,と思って実行可能ファイルを実行したら, まさかの permission denied ってエラーメッセージ出てびっくりしましたよね?

$ ./hello
zsh: permission denied: ./hello

権限ないから権限与えるかー,と思って $ chmod 755 hello で実行権限与えた後に実行したら, まさかの exec format error ってなってびっくりしましたよね?

$ chmod 755 hello

$ ./hello
zsh: exec format error: ./hello

exec format error の原因ですが,もしかしたら depot_tools が悪さをしてるかもしれません.

depot_tools へのパスを削除すると期待動作するかも

筆者の場合ですが,$PATH 環境変数に含まれている /path/to/depot_tools を削除すると期待動作しました.

depot_tools のどこがどういう風に想定外の悪さをしていたのか,そこまでは調べていません.

筆者の MacMini と Macbook Air のどちらも depot_tools へのパスを削除したら, 期待動作したので depot_tools が悪さをしていたのは確実なのですが.

まぁ,原因の本当の理由が分からなくても depot_tools が悪さをしていることは確実なので, vscode とか vi で $HOME/.zshrc を編集して depot_tools へのパスを削除して, source コマンド実行すれば ok です.

depot_tools へのパスの有効化は direnv などを使って, 使うときだけ有効にした方が今回のような想定外の問題に直面しなくなって良いと思います.

$ code $HOME/.zshrc

$ source $HOME/.zshrc

その後に,g++ でコンパイルしてあげれば,普段通り実行できるようになりますよ!

$ g++ -g -o hello -c hello.cc

$ ./hello
Hello, world

おわりに

MacOS で c++ プログラムを実行しようとしたら想定外のエラーが出て途方にくれたが, depot_tools へのパスを削除したら期待動作するようになったお話でした.

参考になった,面白かった,など思っていただけたら嬉しいです.

最後までお読みいただきありがとうございました.

応援していただけるととても嬉しいです!


愛用品


関連記事


大学生へのお知らせ

ここまで記事を読んでくれて本当に嬉しいです、ありがとうございます。

プログラミングを始めたばかりの頃って「やるぞ!」という気持ちは強めですが、 実際に取り組み始めると「何からどうやってどこまでやればいんだ?」 という感じで羅針盤を失うことが多いような気がします。(実体験)

そんな勉強熱心で向上心高めなんだけど目指す姿が曖昧な大学生の方に感謝の意も込めて、就職活動までサポートするプログラミングスクール「レバテックカレッジ」を紹介します。↓

Levtech-college

「自走力」のあるエンジニアを最短3ヶ月で目指せるカリキュラムが月額30,000円で用意されていて、 現段階の「目指す姿が曖昧で何から手をつければいいかわからない状態」から脱却できます。

自分は実際にIT企業で働いていますが、「自走力」のあるエンジニアの方にはいつも助けられています。

なので、目指す姿が曖昧な人はとりあえずレバテックカレッジが導いてくれる 「自走力のあるエンジニア」を目指してみるのはスタートダッシュとしてはアリです。

レベルアップしてからジョブチェンするのはRPGでも常套手段ですし、 レバテックカレッジで一通りのスキルを習得してから自分の目指す姿を再定義するといいかもです。

「自走力のあるエンジニア」って実際どんなエンジニアなの? 何から手をつければいいかわからないから教えて欲しい、 という人は上のテキストリンク/画像リンクから「無料相談会」への申し込みをお願いします。

よきエンジニアライフを!