4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VScodeでcode runner使ってたらlinker command failed with exit code 1って言われた話(C/C++)

Posted at

VScodeでC/C++の環境構築したら思わぬところでハマった話です

MacにVScodeでC/C++書く環境構築する

まずどういう環境構築しようとしたかというお話

わかりやすかったのでこの記事を参考に環境構築しました
Visual studio codeで競プロ環境構築[mac OS]

流れとしては
・Macにgccインストール
・(VScodeにC/C++の拡張機能,code runnerを入れる)
・code runnerの設定をしてあげる
といった感じです

ここまではすんなりOK

何にハマった?

いろいろやり始めて自作の関数作って複数ファイルにコードを分割したとき起こりました
run codeするとlinker command failed with exit code 1と言われてうまく実行されない。
どうやらmainではない別ファイル.cが呼び出されてないことが原因っぽい

ここからtasks.jsonだ-launch.jsonだーとかいろいろいじくり回したんだけどどーもうまくいかない。
それもそのはず。
run codeはcode runnerの内部処理でコンパイルされているからでした

どうやって解消した?

実を言うと最初の参考URLにほぼ答えが載ってたんですが気づかなかったー
いろいろ探してこのページを見て答えにたどり着きました
Visual Studio Code Mac 開発環境構築[C++]

code runnerのconfigurationにもしっかり書いてあるのですが
code runnerではrun codeしたときの動作が言語ごとにしっかり決まっちゃってるんですね。
スクリーンショット 2020-12-21 10.31.28.png
cの場合これが実行されちゃう

cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt

目的のディレクトリに移動→runcodeしたファイルをコンパイルしてそのファイル名の実行ファイルを生成→プログラム実行
と言う流れです。
コンパイルするところを複数ファイルコンパイルしてくれるように書き換えねば!というわけです

■code runnerのページの上部,歯車マークを押してExtension settingsを選ぶ
スクリーンショット 2020-12-21 10.48.19.png

■code-runner: Executor MapのEdit in settings.jsonを選ぶ
スクリーンショット 2020-12-21 10.50.11.png

■目的フォルダ内の全部の.c,.cppプログラムを実行してくれるように書き換える
スクリーンショット 2020-12-21 10.54.10.png
元々 g++ $fileName となっていたものを g++ *.cppと書き換えて目的フォルダ内の全ての.cpp(もしくはc)のファイルをコンパイルしてくれるようにしちゃいます

これでOK

おわりに

おかげさまでcode runnerいれない場合のコンパイルの設定方法にも詳しくなってしまいましたとさ
おしまい

4
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?