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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1637閲覧

SDL2のインストールで「arch の使い方が誤っています。」が発生

Ruqueto

総合スコア6

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2020/07/05 01:26

前提・実現したいこと

C又はC++でディスプレイに図形を描画しようとしています(ホビー目的)。
折角Cを使うので、マルチプラットフォームにしたいと思い、SDL2の導入を考えています。

発生している問題・エラーメッセージ

SDLのホ-ムページの「Development Libraries」よりSDL2-devel-2.0.12-mingw.tar.gzをダウンロードし、SDL2のファイル群(SDL2-2.0.12フォルダ)をC:\に保存しました。
「INSTALL.txt」にあるように、MS-DOSプロンプトでmake crossを実行したところ、makefileのcross:タグでエラーが発生しSDL2をインストール出来ませんでした。

arch の使い方が誤っています。 make: *** [cross] エラー 255

該当のソースコード

makefile

1# 2# Makefile for installing the mingw32 version of the SDL library 3 4CROSS_PATH := /usr/local 5ARCHITECTURES := i686-w64-mingw32 x86_64-w64-mingw32 6 7all install: 8 @echo "Type \"make native\" to install 32-bit to /usr" 9 @echo "Type \"make cross\" to install 32-bit and 64-bit to $(CROSS_PATH)" 10 11native: 12 make install-package arch=i686-w64-mingw32 prefix=/usr 13 14cross: 15 for arch in $(ARCHITECTURES); do \ 16 make install-package arch=$$arch prefix=$(CROSS_PATH)/$$arch; \ 17 done 18 19install-package: 20 @if test -d $(arch) && test -d $(prefix); then \ 21 (cd $(arch) && cp -rv bin include lib share $(prefix)/); \ 22 sed "s|^prefix=.*|prefix=$(prefix)|" <$(arch)/bin/sdl2-config >$(prefix)/bin/sdl2-config; \ 23 chmod 755 $(prefix)/bin/sdl2-config; \ 24 sed "s|^libdir=.*|libdir=\'$(prefix)/lib\'|" <$(arch)/lib/libSDL2.la >$(prefix)/lib/libSDL2.la; \ 25 sed "s|^libdir=.*|libdir=\'$(prefix)/lib\'|" <$(arch)/lib/libSDL2main.la >$(prefix)/lib/libSDL2main.la; \ 26 sed "s|^prefix=.*|prefix=$(prefix)|" <$(arch)/lib/pkgconfig/sdl2.pc >$(prefix)/lib/pkgconfig/sdl2.pc; \ 27 else \ 28 echo "*** ERROR: $(arch) or $(prefix) does not exist!"; \ 29 exit 1; \ 30 fi 31

試したこと

  • archについて調べてみると、Arch Linuxの情報は出て来ますが、archコマンドの記述を見つけることが出来ません。
  • MS-DOSプロンプトでarchと打っても、

'arch' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
エラーが発生します。

  • 当初は、Mingw-w64の配下にSDL2のフォルダを(解凍)コピーし、任意のサンプルプログラムをコンパイルしましたが、エラーが発生しました。

補足情報(FW/ツールのバージョンなど)

  • OS:Windows10 Home 1909
  • コンパイラー:Mingw-w64(x86_64-8.1.0-posix-sjlj-rt_v6-rev0)

###インストールのために参考としたサイト

  • MinGW 用の SDL2 インストール手順 メモhttps://gist.github.com/Hamayama/155b5557db31334ce492
  • SDL2のビルド環境構築

https://www.hiroom2.com/2015/05/11/sdl2%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89/#sec-3

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

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

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

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

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

guest

回答1

0

ベストアンサー

MSYSはインストールされていますか。

Makefileの内容を見ると、bashを前提としてスクリプトが書いてあるので、makeからbashが起動されてfor文を処理する必要があります。

コマンドプロンプトでも作業できますが、後で行なう作業でディレクトリの指定が面倒くさいので、まずMSYSに付属するbashを起動してください。いまどきのWindowsには、WSL用のbash.exeも入っていますから、間違いなくMSYSのbashが起動されるように注意して起動してください。

> C:\_____\MingW\msys\1.0\bin\bash $

bashが起動したら、適当なディレクトリでダウンロードしてきたtar.gzを展開し、作成されたSDL-2.0.12ディレクトリに移動して、「make」を実行してみます。

$ make Type "make native" to install 32-bit to /usr Type "make cross" to install 32-bit and 64-bit to /usr/local

となるはずです。

この状態で「make native」は成功しますが、「make cross」はインストール先のディレクトリが見つからないため失敗します。

$ make cross for arch in i686-w64-mingw32 x86_64-w64-mingw32; do \ make install-package arch=$arch prefix=/usr/local/$arch; \ done make[1]: Entering directory `/_____/SDL2-2.0.12' *** ERROR: i686-w64-mingw32 or /usr/local/i686-w64-mingw32 does not exist! make[1]: *** [install-package] Error 1 make[1]: Leaving directory `/_____/SDL2-2.0.12' make[1]: Entering directory `/_____/SDL2-2.0.12' *** ERROR: x86_64-w64-mingw32 or /usr/local/x86_64-w64-mingw32 does not exist! make[1]: *** [install-package] Error 1 make[1]: Leaving directory `/_____/SDL2-2.0.12' make: *** [cross] Error 2

そこで、「/usr/local」以下に、「i686-w64-mingw32」と「x86_64-w64-mingw32」ディレクトリを作成します。おそらく、「/usr/local」自体もないので、

$ mkdir /usr/local $ mkdir /usr/local/i686-w64-mingw32 $ mkdir /usr/local/x86_64-w64-mingw32

としてください。

あとは、「make cross」でインストールが完了するはずです。

投稿2020/07/05 05:55

編集2020/07/05 08:39
Daregada

総合スコア11990

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

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

Ruqueto

2020/07/05 14:36

詳細なご説明ありがとうございます。 MSYS2(MSYSも)インストールしていません。SDL2はWindowsでも使えると言う事ですが、MSYS2が必要なんですね。 どうもありがとうございました。
Daregada

2020/07/05 14:41

回答に書いてあるように、インストールするのにbashなどが必要になるから、です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問