ソースコードの問題よりかはパソコンに関する問題と思われるのですが、プログラムを実行しようとしても以下のようなコンパイルエラーが出るのですが解決方法がわかるかたはいますか?ちなみにVScodeを利用しています。
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot open output file a.exe: Permission denied
collect2.exe: error: ld returned 1 exit status
実行手順を最初から説明してみてください。
vscodeを開き実行したいファイルを開いた上でgcc -o a ファイル名.cと入力した後、./aと入力しようとするとその前に先ほどのようなエラーが出てきます。
VSCODEのターミナルに
gcc -o a ファイル名.c
を打ったらエラーが出たということですよね。
たぶんカレントディレクトリが書き込み許可のない場所なのだと思いますが、そこに ファイル名.c を保存できているのなら、そうでない気もします。
ターミナルで
pwd
ls -al
を実行して、その結果を教えてください。
Get-Location : 引数 'is-al' を受け
入れる位置指定パラメーターが見つか
りません。
発生場所 行:1 文字:1
+ pwd is-al
+ ~~~~~~~~~
+ CategoryInfo : Inv
alidArgument: (:) [Get-Locati
on]、ParameterBindingException
+ FullyQualifiedErrorId : Pos
itionalParameterNotFound,Micr
osoft.PowerShell.Commands.Get
LocationCommand
という風に出てきました。どこかに問題があるのでしょうか?
is じゃありません。ls です。
そして ls -al のように間に空白が必要です。
ls がコマンド、-al はオプション引数です。
そして pwd と ls は別のコマンドです。
pwd
ls -l
を順番に打ってください。
それ以前の話になりますが、どこでコマンドを打ちました?
ターミナルでMingwのbashを動かしているのだと思いますので(そうですよね?)そこで上記のコマンドを打ってください。
gcc -o a ファイル名.c
というコマンドは、そこで打ったのではないですか?
なんか、もっとゼロからステップバイステップで学べるような、ちゃんとした書籍なりサイトを読んで、順を追って経験を積む必要があるように思います。
ls -lと入力したところ以下のように出力されました。
Get-ChildItem : パラメーター 'Lite
ralPath' の引数が指定されていませ
ん。型 'System.String[]' のパラメ
ーターを指定し、再試行してください
。
発生場所 行:1 文字:4
+ ls -l
+ ~~
+ CategoryInfo : Inv
alidArgument: (:) [Get-ChildI
tem]、ParameterBindingExceptio
n
+ FullyQualifiedErrorId : Mis
singArgument,Microsoft.PowerS
hell.Commands.GetChildItemCom
mand
ls -alと入力したところ以下のように出力されました。
Get-ChildItem : パラメーター名 'al
' に一致するパラメーターが見つかり
ません。
発生場所 行:1 文字:4
+ ls -al
+ ~~~
+ CategoryInfo : Inv
alidArgument: (:) [Get-ChildI
tem]、ParameterBindingExceptio
n
+ FullyQualifiedErrorId : Nam
.PowerShell.Commands.GetChild
ItemCommand
ターミナルでMingwを動かしておりそこでコマンドを打ちました。
ターミナルの起動など基礎的な部分の勉強不足でこのような質問をすることになってしまい申し訳ございません。この問題が解決できたら改めて勉強しなおしたいと思います。
ああ、わかりました。ターミナルでWindows PowerShellが動いていますね。bashではなく。
そしてコマンドを打つと、Get-ChildItemコマンドレットが動いていますね。
打ったコマンドはGet-ChildItemコマンドへのパラメータとなって。
どうしてそういうことになっているのか、ちょっとわかりませんが、ターミナルの設定がおかしいか、使い方が間違っていると思われます。
でもgccは起動できているんですよね…。うーん。
もしかしてコンパイルは、ターミナルでgccを使っているのではなくて、何かVSCodeの拡張機能みたいなものでやっているのですか?
もしコンパイルの方がVScodeでされているとすれば意図していないものです。もともとはgccを利用していました。他のファイルをワークスペースに追加したうえで実行すると問題はないのですが今回は新しいファイルを作り直すのが早いのですかね?