mieki256's diary



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: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_image 1.2.12 のリリース時のドキュメントに、依存してるライブラリのバージョンが書いてあった。

_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 だけはググっても入手できなかったので、比較的バージョンが低いものを選ぶことにした。

ソースファイルの入手 :

ビルド作業 :

zlib, libpng, jpeg, libwebp, tiff の順番でビルドしていく。

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 をビルド。
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 を当てたものと似た感じの記述になっていたので、おそらくソースをそのまま利用できるだろうと踏んで作業した。

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のコンパイル&インストール お気に入りの動画を携帯で見よう

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)

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 環境の構築

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/

  • 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回まで、と説明書には書いてあった。腎臓への負担を考えたら常用するのは良くないらしい。

以上、1 日分です。

過去ログ表示

Prev - 2024/01 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project