2024/01/30(火) [n年前の日記]
#1 [prog][windows] batファイルで環境変数PATH内の一部を無効化
環境は Windows10 x64 22H2。
自分の環境は、環境変数 PATH の中に、Strawberry Perl のインストールフォルダが登録されている。そのせいで、MinGW利用時、MinGW が持ってないはずのツールが ―― 例えば pkg-config などが、Strawberry Perl の bin/ の中から呼び出されてしまう。たぶん他にも、呼び出されたら困るツールがありそうな気もする。
MinGW を利用する時だけ、Strawberry Perl の bin/ を無効化したい。つまり、環境変数 PATH の中から、Strawberry Perl のインストールフォルダだけを除去したい。
自分の環境は、環境変数 PATH の中に、Strawberry Perl のインストールフォルダが登録されている。そのせいで、MinGW利用時、MinGW が持ってないはずのツールが ―― 例えば pkg-config などが、Strawberry Perl の bin/ の中から呼び出されてしまう。たぶん他にも、呼び出されたら困るツールがありそうな気もする。
MinGW を利用する時だけ、Strawberry Perl の bin/ を無効化したい。つまり、環境変数 PATH の中から、Strawberry Perl のインストールフォルダだけを除去したい。
◎ 文字列置換ができそう :
ググったら、以下が使えそうな気がした。
_バッチファイルの引数の文字列置換・パス展開 | 晴耕雨読
コレを使って、MinGW利用開始前に実行するbatファイル内で、Perlインストールディレクトリを無効化してみた。"Perls" を "_Perls" にしてしまうことで、Perlインストールディレクトリが参照されない状態にする。
件のbatファイルの全文は以下。
mingw.bat
これで上手く行った気がする。mingw.bat を実行してから、which pkg-config と打っても何も表示されない。つまりは Perl のインストールフォルダが見えてない状態になってくれた。
_バッチファイルの引数の文字列置換・パス展開 | 晴耕雨読
%PATH:str1=str2% 変数内の文字列1を文字列2に置換
コレを使って、MinGW利用開始前に実行するbatファイル内で、Perlインストールディレクトリを無効化してみた。"Perls" を "_Perls" にしてしまうことで、Perlインストールディレクトリが参照されない状態にする。
set PATH=%PATH:Perls=_Perls%
件のbatファイルの全文は以下。
mingw.bat
@echo off @rem MinGW,MSYS enable @rem disable perl set PATH=%PATH:Perls=_Perls% @rem Please set your MinGW install Directory. set MINGW_PATH=D:\MinGW set MSYS_PATH=%MINGW_PATH%\\msys\1.0 set MINGWADDPATH=%MINGW_PATH%\bin;%MSYS_PATH%\bin set PATH=%MINGWADDPATH%;%PATH% set CPATH=%MINGW_PATH%\include set C_INCLUDE_PATH=%MINGW_PATH%\include @rem set CPLUS_INCLUDE_PATH=%MINGW_PATH%\include set CPLUS_INCLUDE_PATH=%MINGW_PATH%\lib\gcc\mingw32\6.3.0\include\c++ set LIBRARY_PATH=%MINGW_PATH%\lib;%MINGW_PATH%\lib\gcc\mingw32\6.3.0 echo MinGW (SourceForge, gcc 6.3.0) enable. Add path [%MINGWADDPATH%] echo. echo CPATH = %CPATH% echo C_INCLUDE_PATH = %C_INCLUDE_PATH% echo CPLUS_INCLUDE_PATH = %CPLUS_INCLUDE_PATH% echo LIBRARY_PATH = %LIBRARY_PATH%
これで上手く行った気がする。mingw.bat を実行してから、which pkg-config と打っても何も表示されない。つまりは Perl のインストールフォルダが見えてない状態になってくれた。
[ ツッコむ ]
#2 [prog] SDL_image 1.2をMinGWでビルドしてみたかった
Windows10 x64 22H2 + MinGW (gcc 6.3.0) で、SDL 1.x関連のライブラリファイルをビルドできないか試してる。
SDL_mixer は smpeg のビルドで詰まってしまったので、気分転換(?)で、SDL_image 1.2.12 をビルドできないか試してみることにした。
結果を先に書いておくと、SDL_image は tiff (libtiff) のビルドで詰まってしまった…。
SDL_mixer は smpeg のビルドで詰まってしまったので、気分転換(?)で、SDL_image 1.2.12 をビルドできないか試してみることにした。
結果を先に書いておくと、SDL_image は tiff (libtiff) のビルドで詰まってしまった…。
◎ 要求されるライブラリのバージョン :
SDL_image 1.2.12 のリリース時のドキュメントに、依存してるライブラリのバージョンが書いてあった。
_SDL_image 1.2
バージョンは合わせておいたほうがいいのだろう…。
ただ、libwebp 0.1.3 だけはググっても入手できなかったので、比較的バージョンが低いものを選ぶことにした。
_SDL_image 1.2
SDL_image binaries have been built with the following libraries: JPEG v8d (jpegsr8d.zip) libpng 1.5.7 (lpng157.zip) libwebp 0.1.3 (libwebp-0.1.3.zip) tiff 4.0.0 (tiff-4.0.0.zip) zlib 1.2.5 (zlib125.zip)
バージョンは合わせておいたほうがいいのだろう…。
ただ、libwebp 0.1.3 だけはググっても入手できなかったので、比較的バージョンが低いものを選ぶことにした。
◎ ソースファイルの入手 :
必要になるソースファイルは以下。
入手先は以下。
_SDL_image - Index of /projects/SDL_image/release
_zlib - Index of /fossils
_zlib Home Site
_LIBPNG: PNG reference library - Browse /libpng15/older-releases/1.5.7 at SourceForge.net
_libpng Home Page
_jpegsrc.v8d.tar.gz - Directory Listing of /files
_libwebp - Index of downloads.webmproject.org/releases/webp
_libtiff - Index of /libtiff/old/
SDL_image-1.2.12.tar.gz zlib-1.2.5.3.tar.gz libpng-1.5.7.tar.xz jpegsrc.v8d.tar.gz libwebp-0.6.1.tar.gz tiff-4.0.0.tar.gz
入手先は以下。
_SDL_image - Index of /projects/SDL_image/release
_zlib - Index of /fossils
_zlib Home Site
_LIBPNG: PNG reference library - Browse /libpng15/older-releases/1.5.7 at SourceForge.net
_libpng Home Page
_jpegsrc.v8d.tar.gz - Directory Listing of /files
_libwebp - Index of downloads.webmproject.org/releases/webp
_libtiff - Index of /libtiff/old/
◎ ビルド作業 :
zlib, libpng, jpeg, libwebp, tiff の順番でビルドしていく。
msys.bat を実行して、MinGW を使えるようにしておく。msys.bat を実行した上で作業しないと、ビルドできたはずのものも、ビルドできなくなる…。
msys.bat を実行して、MinGW を使えるようにしておく。msys.bat を実行した上で作業しないと、ビルドできたはずのものも、ビルドできなくなる…。
◎ zlib,libpngをビルド :
zlib と libpng のビルドは以下が参考になった。ありがたや。
_zlib-1.2.7をMinGWでビルドする - 新・日々録 by TRASH BOX@Eel
_libpng-1.2.49、libpng-1.5.10をMinGWでビルドする - 新・日々録 by TRASH BOX@Eel
_zlibのコンパイル&インストール お気に入りの動画を携帯で見よう
zlib をビルド。
生成されたファイルを手作業でコピー。
libpng をビルド。
生成されたファイルを手作業でコピー。
_zlib-1.2.7をMinGWでビルドする - 新・日々録 by TRASH BOX@Eel
_libpng-1.2.49、libpng-1.5.10をMinGWでビルドする - 新・日々録 by TRASH BOX@Eel
_zlibのコンパイル&インストール お気に入りの動画を携帯で見よう
zlib をビルド。
tar zxvf zlib-1.2.5.3.tar.gz cd zlib-1.2.5.3 make -f win32/Makefile.gcc all
生成されたファイルを手作業でコピー。
- libz.a, libz.dll.a は /MinGW/lib/ へコピー。
- zconf.h, zlib.h は /MinGW/include/ へコピー。
- zlib1.dll は /MinGW/bin/ へコピー。
libpng をビルド。
cd .. tar zxvf libpng-1.5.7.tar.xz cd libpng-1.5.7 make -f scripts/makefile.gcc
生成されたファイルを手作業でコピー。
- libpng.a は /MinGW/lib/ へコピー。
- png.h, pngconf.h, pnglibconf.h は /MinGW/include/ へコピー。
- pngdebug.h, pnginfo.h, pngpriv.h, pngstruct.h も念のために /MinGW/include/ へコピーしておいた。
◎ jpegをビルド :
以下が参考になった。
_Routine-Work:/resources/doc/jpeg/install-mingw32-02.html (WebArchive)
jpeg-6b の時点では C++ に対応させるために patch を当てていたようだけど、jpeg-8d のソースを眺めたら patch を当てたものと似た感じの記述になっていたので、おそらくソースをそのまま利用できるだろうと踏んで作業した。
以下の場所にファイルがコピーされた。他にもあるかもしれないけど…。
_Routine-Work:/resources/doc/jpeg/install-mingw32-02.html (WebArchive)
jpeg-6b の時点では C++ に対応させるために patch を当てていたようだけど、jpeg-8d のソースを眺めたら patch を当てたものと似た感じの記述になっていたので、おそらくソースをそのまま利用できるだろうと踏んで作業した。
cd .. tar zxvf jpegsrc.v8d.tar.gz cd jpeg-8d ./configure --prefix=/mingw make make install
以下の場所にファイルがコピーされた。他にもあるかもしれないけど…。
/MinGW/bin/libjpeg-8.dll /MinGW/bin/cjpeg.exe /MinGW/bin/djpeg.exe /MinGW/bin/jpegtran.exe /MinGW/bin/rdjpgcom.exe /MinGW/bin/wrjpgcom.exe /MinGW/include/jconfig.h /MinGW/include/jerror.h /MinGW/include/jmorecfg.h /MinGW/include/jpeglib.h /MinGW/lib/libjpeg.a /MinGW/lib/libjpeg.dll.a /MinGW/lib/libjpeg.la
◎ libwebpのビルド :
以下を参考にして作業。
_libwebpのコンパイル&インストール お気に入りの動画を携帯で見よう
以下の場所にファイルがコピーされた。他にもあるかも。
_libwebpのコンパイル&インストール お気に入りの動画を携帯で見よう
cd .. tar zxvf libwebp-0.6.1.tar.gz cd libwebp-0.6.1 ./configure --prefix=/mingw make make install
以下の場所にファイルがコピーされた。他にもあるかも。
/MinGW/bin/libwebp-7.dll /MinGW/bin/cwebp.exe /MinGW/bin/dwebp.exe /MinGW/include/webp/decode.h /MinGW/include/webp/encode.h /MinGW/include/webp/types.h /MinGW/lib/libwebp.a /MinGW/lib/libwebp.dll.a /MinGW/lib/libwebp.la
◎ libtiffのビルド :
以下を参考にして作業。
_Routine-Work:/resources/doc/libtiff/install-mingw32-02.html (WebAechive)
make をした段階で、大量のエラーが出た。どうもリンクが上手く行ってないように見える。lib/libstdc++.a がどうとか表示されてる。
ここで手詰まり。
もしかして、gcc 6.3.0 を使っているから失敗するのだろうか。ググったところ、この時期のSDL関連ファイルのビルドには、MinGW 5.1.4 (gcc 3.4.5) を使っていた事例が多いようだし…。
_Routine-Work:/resources/doc/libtiff/install-mingw32-02.html (WebAechive)
cd .. tar zxvf tiff-4.0.0.tar.gz cd tiff-4.0.0 ./configure --prefix=/mingw make make install
make をした段階で、大量のエラーが出た。どうもリンクが上手く行ってないように見える。lib/libstdc++.a がどうとか表示されてる。
ここで手詰まり。
もしかして、gcc 6.3.0 を使っているから失敗するのだろうか。ググったところ、この時期のSDL関連ファイルのビルドには、MinGW 5.1.4 (gcc 3.4.5) を使っていた事例が多いようだし…。
◎ SDL_imageのビルド :
libtiff はビルドできなかったけど、以下のページを眺めたところ、tiff を無効にした状態で SDL_imageをビルドできなくもないらしい。試してみることにした。
_MinGW + SDL 環境の構築
一応、以下にファイルがコピーされた。
libtiffをビルドできてない点が気になるけれど…。
_MinGW + SDL 環境の構築
cd .. tar zxvf SDL_image-1.2.12.tar.gz cd SDL_image-1.2.12 ./configure --prefix=/mingw --disable-tif make make install
一応、以下にファイルがコピーされた。
/MinGW/bin/SDL_image.dll /MinGW/include/SDL/SDL_image.h /MinGW/lib/libSDL_image.a /MinGW/lib/libSDL_image.dll.a /MinGW/lib/libSDL_image.la
libtiffをビルドできてない点が気になるけれど…。
◎ tiffのバージョンを変えて試した :
tiff (libtiff) のバージョンを変えて、ビルドできるか試してみた。
_Index of /libtiff/
ただ、SDL_image 1.2.12 で、./configure --prefix=/mingw と打った際、tiff関係で警告が出ているように見えた。
これってどうなんだろう…。TIF image loading disabled って言ってるけれど…。結局、tiff が無効になってるということ?
_Index of /libtiff/
- tiff 4.0.0, 4.0.1 ... ビルド失敗
- tiff 4.0.4, 4.0.8, 4.6.0 ... ビルド成功
ただ、SDL_image 1.2.12 で、./configure --prefix=/mingw と打った際、tiff関係で警告が出ているように見えた。
checking for LIBPNG... no checking png.h usability... yes checking png.h presence... yes checking for png.h... yes checking for png_create_read_struct in -lpng... yes checking tiffio.h usability... yes checking tiffio.h presence... yes checking for tiffio.h... yes checking for TIFFClientOpen in -ltiff... no configure: WARNING: *** Unable to find Tiff library (http://www.remotesensing.org/libtiff/) configure: WARNING: TIF image loading disabled checking for LIBWEBP... yes
これってどうなんだろう…。TIF image loading disabled って言ってるけれど…。結局、tiff が無効になってるということ?
[ ツッコむ ]
#3 [nitijyou] 腹痛がツライ
夕方頃、左の背中から左脇腹にかけてズキズキする痛み。たぶんまた結石だろう、我慢するしかないと、痛み止めのロキソニンを飲んだ。振動で落ちてくれないかと、無駄にジャンプを繰り返したり、犬の散歩に行ってみたりしたけれど…。4時間経っても痛みが治まらない。仕方なく、二錠目のロキソニンを飲んだ。一日に二錠も飲むのは初めてのような気がする。ツライ…。明日までには痛みが消えてくれるだろうか…。
一応メモ。ロキソニンは、飲んでから15分〜60分経った頃に効き始める、と書いてあった気がする。一錠飲んだら次に飲めるのは4時間後。また、一日に飲めるのは基本的に2回まで、と説明書には書いてあった。腎臓への負担を考えたら常用するのは良くないらしい。
一応メモ。ロキソニンは、飲んでから15分〜60分経った頃に効き始める、と書いてあった気がする。一錠飲んだら次に飲めるのは4時間後。また、一日に飲めるのは基本的に2回まで、と説明書には書いてあった。腎臓への負担を考えたら常用するのは良くないらしい。
[ ツッコむ ]
以上、1 日分です。