-
Visual Studio Express 2015/2017 for Desktop または2022までのVisual Studio Communityのどれかをインストールする
-
"Document/EDCB_ALL.VS2015.sln"を開き、ツールバーを"Release/Win32"(x64ビルド時は"Release/x64")にしてビルド→ソリューションのビルド
-
(EpgTimerNWが必要な場合のみ)生成された"EpgTimer.exe"を"EpgTimerNW.exe"というファイル名でコピー
-
(lua52.dllが必要な場合のみ) https://github.com/xtne6f/lua/tree/v5.2-luabinaries をzipでダウンロード→展開して"lua52.sln"をビルド
-
(zlib52.dllが必要な場合のみ) https://github.com/xtne6f/lua-zlib/tree/v0.5-lua52 をzipでダウンロード→展開して"zlib52.sln"をビルド
(注意)
- ツールバーのソリューション構成を"Debug"(デバッグモード)にしてビルドすると 非常にパフォーマンスの悪い(高負荷な)バイナリができるので注意する
- Windows SDKのエラーが出る場合は、プロジェクト→ソリューションの再ターゲット で切り替える。ビルド可能なバージョンなら何でもいい
- WindowsXPで実行可能なファイルを作りたいときは、EpgTimerを除く全プロジェクトの 構成プロパティ→プラットフォームツールセットを"v140_xp"などに切り替える必要がある (ソリューションエクスプローラ―上でCtrl+マウス選択を駆使すればまとめて切り替えられる)
- SSE2非対応CPUで実行可能なファイルを作りたいときは、拡張命令セットを"拡張命令なし(/arch:IA32)"に切り替える
※VisualStudioのインストールが面倒な場合お勧め
-
MSYS2 の
msys2-x86_64-日付.exe
(64bitOS用) をインストール
上記サイトに従ってpacman -Syu
→pacman -Su
でパッケージをアップデート
スタートメニューの"MSYS2 MINGW64"(32bitビルド時はMINGW32)を開き、起動した黒窓で以下を実行してmakeとgccをインストールpacman -S make mingw-w64-x86_64-gcc pacman -S make mingw-w64-i686-gcc # 32bitビルド時
-
つづけて以下を実行(この文書が"C:/EDCB/Document"にあると仮定)
cd /c/EDCB/Document/MinGW make
-
(lua52.dllが必要な場合のみ) https://github.com/xtne6f/lua/tree/v5.2-luabinaries をzipでダウンロード→展開して("C:/lua-5.2-luabinaries"と仮定)
cd /c/lua-5.2-luabinaries make lua52.dll
-
(zlib52.dllが必要な場合のみ) https://github.com/xtne6f/lua-zlib/tree/v0.5-lua52 をzipでダウンロード→展開して("C:/lua-zlib-0.5-lua52"と仮定)
cd /c/lua-zlib-0.5-lua52 make zlib52.dll
(注意)
- lua52.dllは https://sourceforge.net/projects/luabinaries/ からダウンロードしたものでもよい
- EpgTimerSrv/liblua52-mingw-lazy-{i686|x86_64}.a は lua-5.2.4_Win{32|64}_dllw6_lib.zip から以下を実行して作成したインポートライブラリ
dlltool -t zz -D lua52.dll -d lua52.def -y liblua52.a
- EpgTimerSrv/liblua52-mingw-lazy-{i686|x86_64}.a は lua-5.2.4_Win{32|64}_dllw6_lib.zip から以下を実行して作成したインポートライブラリ
- EpgTimerAdminProxy.exe、asyncbuf.exe、relayread.exeを除く実行時はlibwinpthread-1.dllも必要(おそらくlibwinpthreadの仕様で スタティックリンクだとハンドルリークするため)。EDCBではEpgTimerSrv.exeのフォルダ、TVTestではTVTest.exeのフォルダに置く
- EpgDataCap_Bon.exeについては、使用するBonDriverに特別な対応がされていない限り、VC++でビルドされたIBonCast.dllが必要
- EpgTimer.exeについてはその他を参照
※ビルド環境が最もコンパクト
-
https://github.com/niXman/mingw-builds-binaries/releases の「Release of 13.1.0-rt_v11-rev1」(上位バージョンがあればそれでもOK) のリストから i686-13.1.0-release-win32-dwarf-msvcrt-rt_v11-rev1.7z(x86ビルド用) または x86_64-13.1.0-release-win32-seh-msvcrt-rt_v11-rev1.7z(x64ビルド用) の7z圧縮ファイルをダウンロードしてどこかに展開
(以下、"C:/mingw32"または"C:/mingw64"に展開したと仮定) -
RunMake.batを実行、"Specify make options :"のプロンプトで何も入力せずEnterキーを押す(クリーンしたいときはcleanと入力)
-
(lua52.dllが必要な場合のみ) https://github.com/xtne6f/lua/tree/v5.2-luabinaries をzipでダウンロード→展開してRunMake.batを実行
"Specify make options :"のプロンプトでlua52.dllと入力してEnterキーを押す -
(zlib52.dllが必要な場合のみ) https://github.com/xtne6f/lua-zlib/tree/v0.5-lua52 をzipでダウンロード→展開してRunMake.batを実行
"Specify make options :"のプロンプトでzlib52.dllと入力してEnterキーを押す
(注意)
- libwinpthread-1.dllは不要。ほかの注意事項は「ビルド(MSYS2/Mingw-w64)」と同様
- 使用するMingw-w64は https://sourceforge.net/projects/mingw-w64/files/ でも可だが、更新が止まってバージョンが古いのでお勧めしない
- "Specify make options :"のプロンプトでプロジェクト名に.allを付けたもの(EpgTimerSrv.allなど)を入力すれば個別にビルドが可能
※VisualStudio2010の延長サポートが終了したため、内容を削除した。必要なら2020年以前のコミットを参照
※動作確認環境はDebian(bookworm)
-
makeとgccをインストール。Debian系ディストリビューションはLua5.2のパッケージも用意されている
sudo apt install make gcc g++ sudo apt install liblua5.2-dev lua-zlib sudo apt install openssl # 必須でない。WebUIでSSL/TLSを利用する場合
gccのバージョンは11以上を想定。RedHat系やあえて自ビルドする場合は後述「Luaモジュールのビルド」もやっておく
-
つづけて以下を実行(この文書が"~/EDCB/Document"にあると仮定)
cd ~/EDCB/Document/Unix make sudo make install # ARIB8CHAR_USE_UNICODEを定義しないEpgDataCap3.soをインストールする場合 sudo make install_u # ARIB8CHAR_USE_UNICODEを定義したEpgDataCap3.soをインストールする場合 make extra && sudo make install_extra # 必須でない。tsreadexなどの関連コマンドのビルド
インストール先は/usr/local/binと/usr/local/lib/edcb
RedHat系は伝統的に/etc/ld.so.confに/usr/local/libを含まないので、EpgTimerSrv実行時に"liblua5.2.so: cannot open ~"みたいなのが出る場合は 検索パスに/usr/local/libを加えるようにEpgTimerSrvをビルドし直す
make EpgTimerSrv.clean LDFLAGS=-Wl,-rpath,/usr/local/lib make EpgTimerSrv.all sudo make EpgTimerSrv.install
-
設定ファイルなどを配置
sudo mkdir /var/local/edcb sudo chown {ユーザー}:{グループ} /var/local/edcb # EpgTimerSrvを実行するユーザーがアクセスできるようにする make setup_ini
必要に応じて/var/local/edcbのパーミッションを0770などに調整すること
以上でEpgTimerSrvを実行すれば http://localhost:5510/ から各種操作が可能。Legacy WebUIについてはlynxなどテキストベースのブラウザでもひと通り操作可能。
ただし、既定ではlocalhostしかWebUIにアクセスできないので必要に応じて /var/local/edcb/EpgTimerSrv.ini のHttpAccessControlListを調整する。
また、既定では設定メニューからの設定の変更が不許可なので必要に応じて /var/local/edcb/HttpPublic/legacy/util.lua のALLOW_SETTINGをtrueにする。 -
サービス化
たとえば以下のようなsystemdのユニットファイルを作成する。{ユーザー}にはサービスを実行するユーザー名を指定する。rootでの実行は推奨しないし想定もしていないsudo tee /etc/systemd/system/edcb.service << 'EOS' [Unit] Description=EpgTimerSrv After=network.target [Service] ExecStart=/usr/local/bin/EpgTimerSrv Restart=always StandardError=journal StandardOutput=null TimeoutStopSec=50 Type=simple User={ユーザー} [Install] WantedBy=default.target EOS sudo systemctl enable edcb
curl -L https://github.com/xtne6f/lua/archive/refs/heads/v5.2-luabinaries.tar.gz | tar xz
cd lua-5.2-luabinaries
make liblua5.2.so
sudo cp liblua5.2.so /usr/local/lib/
sudo ldconfig
curl -L https://github.com/xtne6f/lua-zlib/archive/refs/heads/v0.5-lua52.tar.gz | tar xz
cd lua-zlib-0.5-lua52
make libzlib52.so
sudo mkdir -p /usr/local/lib/lua/5.2
sudo cp libzlib52.so /usr/local/lib/lua/5.2/
-
一部のマクロを定義することでビルドをカスタマイズできる。以下主なもの
EDCB_RC_DIALOG_NO_FONT
(Common/CommonResource.h)ARIB8CHAR_USE_UNICODE
(EpgDataCap3/ARIB8CharDecode.cpp)EPGDB_STD_WREGEX
(EpgTimerSrv/EpgDBManager.h)
ソースコードを編集するかプロジェクトプロパティのプリプロセッサ定義に加える
-
EpgTimer.exeをビルドするだけならVisualStudioは不要(参考:2ch_EDCB/52/224)。 必要なら.NET Framework v4.0以降をインストールして、EpgTimerフォルダでコマンドプロンプトを開いて以下を実行(またはx86build.batを実行)
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe EpgTimer.sln /p:Configuration=Release /p:Platform=x86
放置してもたぶん問題ないが、MSB3644の警告がでる場合は"EpgTimer/EpgTimer/EpgTimer.csproj"をメモ帳で開き
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
となっている部分をインストールされている.NETのバージョンに変更するか、v4.5のTargeting Packをインストールする
-
gitコマンドのある環境では、versionhashgen.batを実行すればバージョン情報にコミットハッシュを埋め込むことができる。 versionhash.shはBashシェル環境用