4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OpenSCをWindowsでビルドする

Last updated at Posted at 2018-04-28

はじめに

GitHubのOpenSCのソースからビルドした時のメモ。
公式サイトの Compiling on Windows を実施したときのメモです。

環境

  • OS=Windows10

OpenSCとは

先にインストールしとく必要があるもの

公式サイトで Build Requirements と Build Configuration の前半に書いてあること。
※Edit Make.rules.makと書いてあって、手動でこのファイルを修正する必要があるように思えるが、とりあえず、この時点では修正する必要はなかった。(最後のステップで修正が必要)

  • Microsoft’s Cryptographic Provider Development Kit
    • cngsdk.msi をダウンロード
    • cngsdk.msi を実行してインストール
  • WiX Toolset

上記以外に必要なもの。

  • Visual Studio 2015
    • 2015 である必要はないと思うがVisual Studioが必要
  • サクラエディタ
  • MSYS2
  • MSYS2 のコマンドいろいろ
    • MSYS2 インストールして Windowsのメニューから MSYS2 MinGW 64-bit(コンソール) を起動
    • コンソールから pacman コマンドを使ってインストールする。以下のコマンド。
    • 実行するコマンド① → pacman -S base-devel
    • 実行するコマンド② → pacman -S msys2-devel
    • これで autoconf,automake,libtool,make,gcc,pkg-config あたりは全部使えるようになる。

参考

:pacmanメモ

ローカルにインストールされたソフトウェアの検索には-Qsオプションを使います。
pacman -Qs [検索したいソフトウェアパッケージ名]

より詳細を知りたい場合は-Qiオプションを使います。
pacman -Qi [検索したいソフトウェアパッケージ名]

更に詳細を表示したい場合はiを増やします。
pacman -Qii [検索したいソフトウェアパッケージ名]

ここからがビルド

公式サイト Build Configuration の真ん中あたりから

  • Windowsのメニューから MSYS2 MinGW 64-bit(コンソール) を起動し、以下のコマンドを順番に実行していく
  • Clone(またはダウンロード)した OpenSCフォルダ に移動してから実行すること

autoreconf -i

MSYS2コンソール
$ autoreconf -i
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: Remember to add 'LT_INIT' to configure.ac.
configure.ac:58: installing './compile'
configure.ac:57: installing './config.guess'
configure.ac:57: installing './config.sub'
configure.ac:28: installing './install-sh'
configure.ac:28: installing './missing'
src/common/Makefile.am: installing './depcomp'
※これでOK

./configure --disable-openssl --disable-readline --disable-zlib

MSYS2コンソール
$ ./configure --disable-openssl --disable-readline --disable-zlib
configure: loading site script /mingw64/etc/config.site
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
・・・
config.status: creating MacOSX/resources/Welcome.html
config.status: creating config.h
config.status: executing depfiles commands
※これでOK

make -C etc opensc.conf

MSYS2コンソール
$ make -C etc opensc.conf
make: ディレクトリ '.../github/opensc/etc' に入ります
make: ディレクトリ '.../github/opensc/etc' から出ます
※これでOK

cp win32/winconfig.h config.h

MSYS2コンソール
$ cp win32/winconfig.h config.h
※これでOK

MSYSコンソールでの作業はここまで。

注意:公式サイト Manually Creating Built Source Filesにかいてあることはやってはいけない。makeでエラーになる。(ちゃんと英語を読めばわかるのかも)

やっちゃいけない
copy win32\winconfig.h.in win32\winconfig.h
copy src\minidriver\versioninfo-minidriver.rc.in src\minidriver\versioninfo-minidriver.rc
copy src\pkcs11\versioninfo-pkcs11.rc.in src\pkcs11\versioninfo-pkcs11.rc
copy src\pkcs11\versioninfo-pkcs11-spy.rc.in src\pkcs11\versioninfo-pkcs11-spy.rc
copy src\tools\versioninfo-tools.rc.in src\tools\versioninfo-tools.rc
copy win32\OpenSC.wxs.in win32\OpenSC.wxs
copy win32\versioninfo-customactions.rc.in win32\versioninfo-customactions.rc
copy win32\versioninfo.rc.in win32\versioninfo.rc
copy win32\winconfig.h.in win32\winconfig.h

やっとMake

公式サイト Build OpenSC のところ
さらっと書いてあるが、一番大変。

  • Windowsのメニューから 開発者コマンド プロンプト for VS2015 を起動し、コマンドを実行していく
  • Clone(またはダウンロード)した OpenSCフォルダ に移動してから実行すること

nmake /f Makefile.mak

VisualStudio開発者コマンドプロンプトでnmake
C:\GitHub\OpenSC>nmake /f Makefile.mak

Microsoft(R) Program Maintenance Utility Version 14.00.24210.0
Copyright (C) Microsoft Corporation.  All rights reserved.

copy /y winconfig.h config.h
1 個のファイルをコピーしました。
rc /l 0x0409 versioninfo-customactions.rc
Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384
Copyright (C) Microsoft Corporation.  All rights reserved.

cl /O1 /GS /W3 /WX /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_WARNINGS /MT /nologo /DHAVE_CONFIG_H /I..\..\win32 /I..\..\src       "/IC:\Program Files (x86)\Microsoft CNG Development Kit\Include" "/IC:\Program Files (x86)\WiX Toolset v3.11\\SDK\VS2015\inc" /DWINVER=0x0601 /D_WIN32_WINNT=0x0601 /DWIN32_LEAN_AND_MEAN    /DENABLE_MINIDRIVER /DENABLE_SM /DOPENSC_FEATURES="\"pcsc\"" /Zi /c compat_getpass.c compat_getopt.c compat_strlcpy.c compat_strlcat.c simclist.c compat_report_rangecheckfailure.c compat___iob_func.c

C:\GitHub\OpenSC\src\libopensc/opensc.h(846): error C2220: 警告をエラーとして扱いました。'object' ファイルは生成されません。
C:\GitHub\OpenSC\src\libopensc/opensc.h(846): warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。

こんな感じのエラーが山ほど出る。

error C2220 と warning C4819 のエラーが山ほど出るので、一つ一つ修正していく必要がある。

  • エラーとなったファイルをサクラエディタで開く(上記例では opensc.h)
  • 文字コードをUTF-8(BOM付き)に変更する。
    • サクラエディタで「名前を付けて保存→文字コードセット=UTF-8 , BOMのチェックをON にして上書き保存。
    • 参考になったサイト

文字コードを変更して、nmake /f Makefile.mak

VisualStudio開発者コマンドプロンプトでnmake
C:\GitHub\OpenSC>nmake /f Makefile.mak

        lib /nologo /machine: /out:common.lib compat_getpass.obj compat_getopt.obj compat_strlcpy.obj compat_strlcat.obj simclist.obj compat_report_rangecheckfailure.obj compat___iob_func.obj
LINK : fatal error LNK1146: オプション '/machine:' の引数が指定されていません。
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\lib.EXE"' : リターン コード '0x47a'
Stop.

今度はこんな感じのエラーが山ほど出る。

LNK1146: オプション '/machine:' というエラーが出る。

これは環境によるものかもしれません。原因不明だが、win32\Make.rules.mak を修正する必要があるようだ

Make.rules.mak
OPENSC_FEATURES = pcsc

# ↓この行を追加
PLATFORM = x86

# Include support for minidriver
MINIDRIVER_DEF = /DENABLE_MINIDRIVER

ちなみに PLATFORM = x64 だと、また変なエラーが出てしまうのでx86にした。(もう疲れた)

PLATFORM=x64にするとこんなエラー
fatal error LNK1112: モジュールのコンピューターの種類 'X86' は対象コンピューターの種類 'x64' と競合しています。

これで何度目かのnmakeでやっとエラーなしとなった。

ビルドでできるもの
C:\GitHub\OpenSC>dir *.dll *.exe /S

 C:\GitHub\OpenSC\src\libopensc のディレクトリ

2018/04/28  17:33           989,184 opensc.dll
               1 個のファイル             989,184 バイト

 C:\GitHub\OpenSC\src\minidriver のディレクトリ

2018/04/28  17:34         1,046,016 opensc-minidriver.dll
               1 個のファイル           1,046,016 バイト

 C:\GitHub\OpenSC\src\pkcs11 のディレクトリ

2018/04/28  17:33           832,512 onepin-opensc-pkcs11.dll
2018/04/28  17:33           832,512 opensc-pkcs11.dll
2018/04/28  17:33           150,016 pkcs11-spy.dll
               3 個のファイル           1,815,040 バイト

 C:\GitHub\OpenSC\src\tests のディレクトリ

2018/04/28  17:34           112,128 base64.exe
2018/04/28  17:34           129,536 p15dump.exe
2018/04/28  17:34           118,784 pintest.exe
               3 個のファイル             360,448 バイト

 C:\GitHub\OpenSC\src\tools のディレクトリ

2018/04/28  17:33           123,904 cardos-tool.exe
2018/04/28  17:34           111,104 egk-tool.exe
2018/04/28  17:33           127,488 eidenv.exe
2018/04/28  17:33           118,784 iasecc-tool.exe
2018/04/28  17:33           142,336 openpgp-tool.exe
2018/04/28  17:34           112,640 opensc-asn1.exe
2018/04/28  17:33           178,176 opensc-explorer.exe
2018/04/28  17:34           156,672 opensc-notify.exe
2018/04/28  17:33           143,360 opensc-tool.exe
2018/04/28  17:33           220,672 pkcs11-tool.exe
2018/04/28  17:33           136,192 pkcs15-crypt.exe
2018/04/28  17:33           176,128 pkcs15-tool.exe
              12 個のファイル           1,747,456 バイト

 C:\GitHub\OpenSC\win32 のディレクトリ

2018/04/28  17:34           135,680 customactions.dll
               1 個のファイル             135,680 バイト

     ファイルの総数:
              21 個のファイル           6,093,824 バイト

win32フォルダでnmake /f Makefile.mak OpenSC.msi

開発者コマンドプロンプトでnmake
C:\GitHub\OpenSC>cd win32
C:\GitHub\OpenSC>nmake /f Makefile.mak OpenSC.msi

なんだかんだログがでて OpenSC.msi ができて終了

以上でビルド終了、お疲れさまでした。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?