質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Q&A

解決済

2回答

225閲覧

C言語でVScode上でHello Worldを実行できない

gamori

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

1グッド

0クリップ

投稿2024/11/14 10:50

実現したいこと

#include <stdio.h>
void main()
{
printf("Hello World!\n");
}
これを動作させたいです。

発生している問題・分からないこと

PS Microsoft.PowerShell.Core\FileSystem::\wsl.localhost\Debian\home\tgkkn> cd "\wsl.localhost\Debian\home\tgkkn" ; if ($?) { gcc HelloWorld.c -o HelloWorld } ; if ($?) { .\HelloWorld }
C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot open output file HelloWorld.exe: Invalid argument
collect2.exe: error: ld returned 1 exit status
ターミナルにこう出てしまいます何が何だか分かりません

該当のソースコード

C

1#include <stdio.h> 2void main() 3{ 4 printf("Hello World!\n"); 5}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

cd "\wsl.localhost\Debian\home\tgkkn" ; if ($?) { gcc HelloWorld.c -o HelloWorld } ; if ($?) { .\HelloWorld }
C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot open output file HelloWorld.exe: Invalid argument
collect2.exe: error: ld returned 1 exit status
結果はこう出てしまいます

補足

大学ではDebian上でgedit を起動してコードを打つ形式で講義が進められているのですがSVcodeの方が良いと説明されたのでできればこちらでできるようになりたいです。調べたら出てくる初心者向けのc言語とVScodeの環境構築のサイトになぞらえて環境構築しました。

tatsu99👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2024/11/14 12:13

コンソールの状態を見る限り、WSL上のファイルをmingwからビルドしようとしていますが、何かを狙ってそのような構成としているのでしょうか。
gamori

2024/11/14 13:10

いいえ、そのようなことはありません。ただ授業でwsl を使っていたのでそうなってしまっているのかもしれません。最終的な目標はgnuplotによりグラフを書く目的です。授業内ではDebianからgnuplotを開いていました。
cnnDevKibo

2024/11/15 02:01

もしmingwが64ではなく32でエラーが出たのではないかと思います。
cnnDevKibo

2024/11/15 02:03

visual studio では Python のように pip 管理するシステムがないので、code block や visual studio basic で始めることをお勧めします
guest

回答2

0

ベストアンサー

大学ではDebian上でgedit を起動してコードを打つ形式で講義が進められているのですがSVcodeの方が良いと説明されたのでできればこちらでできるようになりたいです。

このような状況であれば、WSL内で動くVSCodeを使うことをおすすめします。

Linux 用 Windows サブシステムで Visual Studio Code の使用を開始する

gccなどのツールチェーンもDebian内にインストールして、コンソールもPowershellではなくUnix系のbashなどを使いましょう。

投稿2024/11/14 13:28

maisumakun

総合スコア145930

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gamori

2024/11/14 13:32

ありがとうございます。もう一度試行錯誤してみます。
guest

0

[香車]東上☆Aho(暎帆)☆海美「
Windows のタグはついていないが、多分、Windows だろう。

最初に

Windows 10, 11 には、

  1. Windows ネイティブ環境
  2. WSL 環境

の二つの環境があります。
『VSCode で C 言語』という Web 上の情報にも、

  1. Windows ネイティブ環境の情報
  2. WSL 環境の情報

の二系統の情報が、どちらの系統か明記されないまま、存在しているようです。
また、『VSCode 初心者向け』の情報は、『パソコンでのプログラミングに慣れた人の中で、VSCode について初心者である方』向けであって、『パソコンでのプログラミング初心者』向けでは無い、ことが多いようです。

本題

cd "\wsl.localhost\Debian\home\tgkkn" ; if ($?) { gcc HelloWorld.c -o HelloWorld } ; if ($?) { .\HelloWorld }

『WSL 環境』用の Make が動いている。
『WSL 環境』用の実行ファイルを作っている == 生成される実行ファイルは HelloWorld.exe ではない。

C:/Program Files/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot open output file HelloWorld.exe: Invalid argument

『Windows ネイティブ環境』用の ld.exe が、『HelloWorld.exe という引数がおかしいので実行できない、と言っている == HelloWorld.exe が見つからない』と言っている。

collect2.exe: error: ld returned 1 exit status

『Windows ネイティブ環境』用の collect2.exe が、『Windows ネイティブ環境』用の ld が、『1 という返り値を返した == 異常終了』と言っている。

ネット記事を参照して、VSCode に『WSL 環境』のセットアップを行い、
先ほどのネット記事とは、別の記事を参考に、『Windows ネイティブ環境』用の C 言語コンパイラのインストールを行い、『WSL 環境』用の Make ファイルを書き換えて、make 実行した、と推理しました。

結論

Windows で、C 言語初心者なら、(VSCode とは異なる)Visual Studio をインストールして、使いましょう。

投稿2024/11/14 13:16

umimi

総合スコア504

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gamori

2024/11/14 13:31

回答ありがとうございます。授業内でwslを使っていました。おそらくそのため今回の問題が発生してしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問