GnuTLSをインストールする前に、Nettleをインストールします。
NettleのインストールにはGMPが必要なので、先にインストールしておいてください。
GMPのコンパイル&インストール1. NettleのインストールNettle - a low-level cryptographic library
http://www.lysator.liu.se/~nisse/nettle/このページの、
DownloadGet the latest version by http or ftp.
のhttpのリンクから、archiveページに行きます。
http://www.lysator.liu.se/~nisse/archive/より、
nettle-2.7.1.tar.gz
を、適当なディレクトリに保存します。
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf nettle-2.7.1.tar.gz
$ cd nettle-2.7.1
$ ./configure --prefix=/mingw --disable-shared --disable-openssl
$ make
$ make install
2. GnuTLSのインストールThe GNU Transport Layer Security Library
http://gnutls.org/赤いバーのメニューのDownloadから、ダウンロードページに行きます。
http://gnutls.org/download.htmlDownloading the GnuTLS libraryのstableから、v3.3ディレクトリを開きます。
ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/
ここから、
gnutls-3.3.16.tar.xz
を、適当なディレクトリに保存します。
2013/07/21 追記configureの後、pkg-config用のファイル「lib/gnutls.pc」の「Libs.private:」項目に、
-lcrypt32
を追加するようにしました。
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xJf gnutls-3.3.16.tar.xz
$ cd gnutls-3.3.16
$ ./configure --prefix=/mingw --disable-shared --disable-cxx --disable-openssl-compatibility --disable-doc --disable-gtk-doc-html --with-included-libtasn1 --without-p11-kit
$ sed -i.orig -e "/Libs.private:/s/$/ -lcrypt32/" lib/gnutls.pc
$ make
$ make install
2014/02/02 追記念のため、make checkして、エラーが出なければOKです。make checkの結果、以下のログにFAILが8個ありました。
gl/tests/test-suite.log
今のところ、原因不明です。
以上で終了です。
【補足】
拡張子が.xzのファイルは、GNU tar 1.22以降で解凍できます。
GNU tar 1.22以降をインストールするか、または、7-ZipなどのGUIツールで解答してください。
2012/11/02 追記gnutls-3.1.3から、src/serv.c で以下のようなエラーが出るようになりました。
serv.c: In function 'cmd_parser':
serv.c:1668:1: error: pasting "INDEX_OPT_" and "(" does not give a valid preprocessing token
serv.c:1668:3: warning: implicit declaration of function 'INDEX_OPT_' [-Wimplicit-function-declaration]
serv.c:1669:1: error: pasting "INDEX_OPT_" and "(" does not give a valid preprocessing token
これは、「/mingw/include/wincrypt.h」で定義されている「OCSP_RESPONSE」と同じキーワードを、エラーの所で使用しているのが原因でした。
そのため、エラーが出る所の直前で、
#ifdef _WIN32
#undef OCSP_RESPONSE
#endif
としています。
2013/05/11 追記src/serv.c のパッチは、gnutls-3.1.11以降では不要です。
【更新履歴】を見る
2012/02/24 追記
GnuTLSの最新版は、gnutls-3.0.13です。
gnutls-3.0.12 を gnutls-3.0.13 に修正しました。
2012/03/01 追記
GnuTLSの最新版は、gnutls-3.0.14です。
gnutls-3.0.13 を gnutls-3.0.14 に修正しました。
2012/03/04 追記
GnuTLSの最新版は、gnutls-3.0.15です。
gnutls-3.0.14 を gnutls-3.0.15 に修正しました。
2012/04/23 追記
GnuTLSの最新版は、gnutls-3.0.19です。
gnutls-3.0.15 を gnutls-3.0.19 に修正しました。
2012/06/07 追記
GnuTLSの最新版は、gnutls-3.0.20です。
gnutls-3.0.19 を gnutls-3.0.20 に修正しました。
2012/07/07 追記
GnuTLSの最新版は、gnutls-3.0.21です。
gnutls-3.0.20 を gnutls-3.0.21 に修正しました。
Nettleの最新版は、nettle-2.5-pre2です。
nettle-2.5-pre を nettle-2.5-pre2 に修正しました。
2012/07/08 追記
Nettleの最新版は、nettle-2.5です。
nettle-2.5-pre2 を nettle-2.5 に修正しました。
2012/08/21 追記
GnuTLSの最新版は、gnutls-3.1.0です。
gnutls-3.0.21 を gnutls-3.1.0 に修正しました。
2012/09/21 追記
GnuTLSの最新版は、gnutls-3.1.1です。
gnutls-3.1.0 を gnutls-3.1.1 に修正しました。
2012/09/29 追記
GnuTLSの最新版は、gnutls-3.1.2です。
gnutls-3.1.1 を gnutls-3.1.2 に修正しました。
2012/10/14 追記
GnuTLSの最新版は、gnutls-3.1.3です。
gnutls-3.1.2 を gnutls-3.1.3 に修正しました。
2012/11/02 追記
gnutls-3.1.3から、src/serv.c でコンパイルエラーが出るようになりましたので、以下のパッチを適用してください。
gnutls-3.1.3-win32.diff
$ patch -p1 < gnutls-3.1.3-win32.diff
2012/11/11 追記
GnuTLSの最新版は、gnutls-3.1.4です。
gnutls-3.1.3 を gnutls-3.1.4 に修正しました。
src/serv.c のパッチは変更ありません。
2012/11/28 追記
GnuTLSの最新版は、gnutls-3.1.5です。
gnutls-3.1.4 を gnutls-3.1.5 に修正しました。
src/serv.c のパッチは変更ありません。
2013/01/15 追記
GnuTLSのURLが変わりました。
The GNU Transport Layer Security Library
http://www.gnu.org/software/gnutls/
http://gnutls.org/
赤いバーのメニューのDownloadから、ダウンロードページに行きます。
http://www.gnu.org/software/gnutls/download.html
http://gnutls.org/download.html
GnuTLS libraryの、Site:のリンクのどれかを開き、
GnuTLS libraryのprimary FTP serverから、v3.1ディレクトリを開きます。
ftp://ftp.gnutls.org/gcrypt/gnutls/v3.1/
ここから、(以下略)
2013/01/15 追記
GnuTLSの最新版は、gnutls-3.1.6です。
gnutls-3.1.5 を gnutls-3.1.6 に修正しました。
src/serv.c のパッチは変更ありません。
2013/01/26 追記
Nettleの最新版は、nettle-2.6です。
nettle-2.5 を nettle-2.6 に修正しました。
2013/02/09 追記
GnuTLSの最新版は、gnutls-3.1.7です。
gnutls-3.1.6 を gnutls-3.1.7 に修正しました。
src/serv.c のパッチは変更ありません。
2013/02/10 追記
GnuTLSの最新版は、gnutls-3.1.8です。
gnutls-3.1.7 を gnutls-3.1.8 に修正しました。
src/serv.c のパッチは変更ありません。
2013/04/25 追記
GnuTLSの最新版は、gnutls-3.1.10です。
gnutls-3.1.8 を gnutls-3.1.10 に修正しました。
src/serv.c のパッチは変更ありません。
2013/04/25 追記
Nettleの最新版は、nettle-2.7です。
nettle-2.6 を nettle-2.7 に修正しました。
2013/05/11 追記
GnuTLSの最新版は、gnutls-3.1.11です。
gnutls-3.1.10 を gnutls-3.1.11 に修正しました。
2013/05/11 追記
gnutls-3.2.0がリリースされましたが、configureで
configure: error: you must have sys_mman.h on your system
というエラーが出るので、原因調査中です。
2013/05/30 追記
Nettleの最新版は、nettle-2.7.1です。
nettle-2.7 を nettle-2.7.1 に修正しました。
2013/06/23 追記
gnutls-3.1.12とgnutls-3.2.1がリリースされていますが、エラーでmakeが完了しないので、原因調査中です。
2013/07/15 追記
GnuTLSの最新版は、gnutls-3.2.2です。
gnutls-3.1.11 を gnutls-3.2.2 に修正しました。
2013/07/21 追記
configureの後、pkg-config用のファイル「lib/gnutls.pc」の「Libs.private:」項目に、
-lcrypt32
を追加するようにしました。
$ sed -i.orig -e "/Libs.private:/s/$/ -lcrypt32/" lib/gnutls.pc
2013/08/31 追記
GnuTLSの最新版は、gnutls-3.2.3です。
gnutls-3.2.2 を gnutls-3.2.3 に修正しました。
2013/10/24 追記
GnuTLSの最新版は、gnutls-3.2.5です。
gnutls-3.2.3 を gnutls-3.2.5 に修正しました。
2013/10/24 追記
念のため、make checkして、エラーが出なければOKです。
久しぶりにmake checkしてみたら、エラーになるTESTがいくつかありました。
原因は調査中です。
2013/11/03 追記
GnuTLSの最新版は、gnutls-3.2.6です。
gnutls-3.2.5 を gnutls-3.2.6 に修正しました。
2013/11/27 追記
GnuTLSの最新版は、gnutls-3.2.7です。
gnutls-3.2.6 を gnutls-3.2.7 に修正しました。
2014/01/25 追記
gnutls-3.2.7でmake checkしてみたところ、エラーはありませんでした。
2014/02/02 追記
GnuTLSの最新版は、gnutls-3.2.10です。
gnutls-3.2.7 を gnutls-3.2.10 に修正しました。
2014/02/02 追記
念のため、make checkして、エラーが出なければOKです。
make checkの結果、以下のログにFAILが8個ありました。
gl/tests/test-suite.log
今のところ、原因不明です。
2014/02/14 追記
Nettleのconfigureオプションに「--disable-shared」を追加しました。
2014/02/17 追記
GnuTLSの最新版は、gnutls-3.2.11です。
gnutls-3.2.10 を gnutls-3.2.11 に修正しました。
2014/03/12 追記
GnuTLSの最新版は、gnutls-3.2.12.1です。
gnutls-3.2.11 を gnutls-3.2.12.1 に修正しました。
解凍すると、ディレクトリは gnutls-3.2.12 になります。
2014/05/03 追記
GnuTLSの最新版は、gnutls-3.2.13です。
gnutls-3.2.12.1 を gnutls-3.2.13 に修正しました。
2014/05/11 追記
GnuTLSの最新版は、gnutls-3.2.14です。
gnutls-3.2.13 を gnutls-3.2.14 に修正しました。
2014/06/06 追記
GnuTLSの最新版は、gnutls-3.2.15です。
gnutls-3.2.14 を gnutls-3.2.15 に修正しました。
2014/09/13 追記
GnuTLSの最新版は、gnutls-3.2.17です。
gnutls-3.2.15 を gnutls-3.2.17 に修正しました。
2014/10/22 追記
GnuTLSの最新版は、gnutls-3.2.19です。
gnutls-3.2.17 を gnutls-3.2.19 に修正しました。
2015/01/25 追記
GnuTLSの最新版は、gnutls-3.2.21です。
gnutls-3.2.19 を gnutls-3.2.21 に修正しました。
2015/08/15 追記
GnuTLSのstable最新版はgnutls-3.3.17ですが、エラーになるため、gnutls-3.3.16を使用します。
gnutls-3.2.21 を gnutls-3.3.16 に修正しました。
その他、説明を修正しました。
GnuTLS libraryのprimary FTP serverから、v3.2ディレクトリを開きます。
ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2/
Downloading the GnuTLS libraryのstableから、v3.3ディレクトリを開きます。
ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/
2015/08/15 追記
configureオプションを変更しました。
$ ./configure --prefix=/mingw --enable-threads=win32 --disable-shared --disable-cxx --disable-openssl-compatibility --without-p11-kit
$ ./configure --prefix=/mingw --disable-shared --disable-cxx --disable-openssl-compatibility --disable-doc --disable-gtk-doc-html --with-included-libtasn1 --without-p11-kit
【更新履歴】を閉じる
このようなErrorが出てしまいます。(クロスコンパイル環境のx86でmake)
http://privatepaste.com/0ccc3a5ce0
色々と調べて二週間(瀑
解決できませんでした。
環境が違うのでなんとも言えないと思いますが、お気づきの点が御座いましたら宜しくお願いします。
XhmikosR's builds
http://xhmikosr.1f0.de/tools/
> 色々と調べて二週間(瀑
お疲れさまです…
src/serv.c の1668行目からたどってみると、
HAVE_OPT(OCSP_RESPONSE)
が、src/serv-args.h 119行目で
(! UNUSED_OPT(& DESC(OCSP_RESPONSE)))
になり、同じく118行目で
(! UNUSED_OPT(& (gnutls_servOptions.pOptDesc[INDEX_OPT_OCSP_RESPONSE)))
になるということでしょうか。
src/serv-args.h 118行目の
[INDEX_OPT_## n]
あたりがあやしそうな感じですが、エラーが再現できないので分かりません。
##とnの間のスペースを削除してみるとかはいかがでしょう?
三週間目まで頑張ってゴニョゴニョしてみますw
お付き合い有難う御座いました。
ググっても同じエラーが見つからないし、謎ですね。
また何か分かりましたら追記します。
NettleやGnuTLSのVersionを下げてみたりしてトライしてみます。
有難う御座いました。
その後何か進展はありましたでしょうか?
同じマクロが使われていても、src/serv.c の1668、1669行目だけエラーになるのは何でだろう?と目を皿のようにしてソースを眺めていたら、
HAVE_OPTとOPT_ARGの後の左カッコの間にスペースが有るか無いかの違いでした。
そんなことでエラーになるのか分かりませんが、とりあえずご参考まで。
試しにsrc/serv-args.h + src/serv.cの修正も試しましたが同じでした。
一応、error-log置いておきますね。
http://sada5.sakura.ne.jp/GnuTLS-Error-Log.rar
たびたびすみません。
よく見たら、私の環境でもsrc/serv.c の同じところでエラーになってました。チーン
結局、
OCSP_RESPONSE
というマクロが、/mingw/include/wincrypt.h で定義されているのが原因でした。
src/serv.c 1668行目から、
#ifdef _WIN32
#undef OCSP_RESPONSE
#endif
if (HAVE_OPT(OCSP_RESPONSE))
status_response_ocsp = OPT_ARG(OCSP_RESPONSE);
とすればOKです。
数週間の悩みが吹っ飛びましたw
色々とErrorの原因を調べてたら、libtasn1-2.14を入れないと旧版が入ってしまうと言う記事を見ました。(URL控えてませんでした)
polarssl,openssl,GnuTLSをmakeして思ったのですが、polarssl一番いいw
色々と有難う御座いました。
やっぱり、polarsslが一番いいですね。
ffmpegでも、gnutlsかopensslが必要なところを、polarsslも選択できるようになるといいんですけど。
libtasn1は、時間がある時に試してみます。
ありがとうございました。