2011年8月31日水曜日

Cygwinビルドで解決へ…

Cygwinでビルドしたら、日本語・全角ファイル名を受け付けるモノができてしまいました。

Windows用バイナリを一時的にこちらで配布中。

Cygwin導入時の注意点:
  • gcc, gcc-core, gcc-g++, gcc-javaの4つをを含めるようにします。
  • これらは Devel グループに在ります。
  • 版は必ず3.4.4-3にします。3.4.4-999にしますと確かビルドに失敗します。
Cygwin1.dllのバージョンについて:
  • バージョンによっては一部の日本語文字や、ダブルクォーテーションを受け付けません。
  • cygwin1.dllが1.7.9の物はOKでした。
  • cygwin1.dllが1.7.10又は1.7.11の物はNGです。
  • cygwin1.dllが1.7.12の物はOKです。
ビルド時の注意点:
  • pdftk\Makefile.Windowsを手直しします。
    • export LDLIBS= c:/mingw-3.4.5/lib/crt2.o -nostdlib -lgcj -lws2_32 -liconv -luser32 -ladvapi32 -lmingw32 -lstdc++ -lgcc -lmoldname -lmingwex -lkernel32 -lmsvcrt
    • ↑の行を↓の行のように直します。
    • export LDLIBS= -lgcj -lstdc++ -lz
  • ビルドの際は、pdftkディレクトリに入って、make -f Makefile.Windowsで構築できると思います。
利用時の注意点:
  • Cygwin系DLLへの依存関係が発生します。次の4つのDLLへの参照を確認しました:
  • CYGWIN1.DLL
  • CYGICONV-2.DLL
  • CYGZ.DLL
  • CYGGCC_S-1.DLL
Cygwin版で、ファイルパスを書く時のヒント:
  • 空白対策→ダブルクォーテーションで囲む。
    例:"ABC DEF GHI.pdf"
  • ダブルクォーテーション対策→バックスラッシュは二重にする。
    例:"\\\\DD11\\A\\動作チェック用テストデータ.pdf"
スタティックビルドにする場合:
  • pdftk\Makefile.Windowsを更に手直しします。
    • export CXXFLAGS= -Wall -Wextra -Weffc++ -O2 -static -static-libgcc
  • 但し、CYGWIN1.DLLへの参照は引き続き発生致します。
これでビルドに成功、実行環境が整いました。

早速、日本語・全角のファイル名で試してみました:
C:\A>pdftk 日本語入力.pdf output 日本語出力.pdf

cygwin warning:
  MS-DOS style path detected: \Program Files\Java\jre6\lib\ext\QTJava.zip
  Preferred POSIX equivalent is: /Program Files/Java/jre6/lib/ext/QTJava.zip
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
   
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames

C:\A>echo %errorlevel%
0


C:\A>dir 日本語出力.pdf
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 2C33-8430 です

 C:\A のディレクトリ
2011/08/31  10:46        19,451,713 日本語出力.pdf
               1 個のファイル          19,451,713 バイト
               0 個のディレクトリ  81,907,027,968 バイトの空き領域
警告が出力されますが、機能的には問題ないようでした。

0 件のコメント:

コメントを投稿