Borland C++ Compiler 5.5 の環境設定

第1回 C言語に触れてみよう | 日経 xTECH(クロステック) を読んで「Borland ってフリーのコンパイラがあったのかぁ」と今更ながらに気づいたので,CLX C++ Libraries を BCC5.5 に対応中*1.対応版は後ほどリリースするとして,今回は BCC5.5 で CLX C++ Libraries を使うための環境設定についてメモしておきます.尚,Visual Studio で使用する場合は VC++ 2010 の環境設定 - Life like a clown を参照して下さい.

Borland C++ Compiler 5.5 のインストール

第1回 C言語に触れてみよう | 日経 xTECH(クロステック) で紹介されている Borland C++ Compiler 5.5 With Command Line Tools からダウンロード&インストール.特に難しい箇所はなかったように思います.

BCC5.5 は,bcc32.cfg および ilink32.cfg と言う設定ファイルでインクルード&リンク関係を設定しておけるようです.BCC55\Bin 以下に bcc32.cfg, および ilink32.cfg ファイルを作成し,それぞれ以下のような設定を記述しておきます.

bcc32.cfg

-I"C:\Borland\BCC55\Include"
-L"C:\Borland\BCC55\Lib"

ilink32.cfg

-L"C:\Borland\BCC55\Lib"

-L の引数として C:\Borland\BCC55\Lib\PSDK も追加しておいた方が良いのかもしれません.インストールディレクトリを変更した場合は,パスもそれに合わせて変更します.また,コマンドラインから使えるように環境変数の PATH に C:\Borland\BCC55\Bin を追加します.

zlib のインストール

zlib Home Site より最新のソースコードをダウンロードしてきます.解凍したフォルダの中に Borland C++ Compiler 用の Makefile も存在するので,以下のようにして make します.

zlib-1.2.5> make -f win32\Makefile.bor

make に成功すると,フォルダに zlib.lib が生成されるので,これを BCB55\Lib にコピーします.また,zlib.h, zconf.h, zutil.h を BCB55\Include にコピーします(他のヘッダーファイルは不要?)

OpenSSL のインストール

/index.html より最新のソースコードをダウンロードしてきます.解凍してできたフォルダで,コマンドプロンプトから以下のようにコマンドを実行します(※内部で Perl を使用しているので,make 環境に Perl がインストールされている必要があります).

openssl-1.0.0a> ms\bcb4.bat
openssl-1.0.0a> make -f bcb.mak

ただし,手元の環境ではエラーが出て make が成功しませんでした.取り合えず,make が通るように修正したソースコード(差分)を以下にアップロードしておきます.

修正箇所は以下の通りです.

ssl/d1_lib.c

$ diff openssl-1.0.0a/ssl/d1_lib.c openssl-1.0.0a-borland/ssl/d1_lib.c 
368,369c368,369
<       struct _timeb tb;
<       _ftime(&tb);
---
>       struct timeb tb;
>       ftime(&tb);

crypto/bio/bss_dgram.c

$ diff openssl-1.0.0a/crypto/bio/bss_dgram.c openssl-1.0.0a-borland/crypto/bio/bss_dgram.c 
818,819c818,819
<       struct _timeb tb;
<       _ftime(&tb);
---
>       struct timeb tb;
>       ftime(&tb);

crypto/rand/randfile.c

$ diff openssl-1.0.0a/crypto/rand/randfile.c openssl-1.0.0a-borland/crypto/rand/randfile.c 
85c85
< #define open  _open
---
> #define open  _sopen_s
208c208,209
<       int fd = open(file, O_WRONLY|O_CREAT|O_BINARY, 0600);
---
>       int fd = -1;
>       open(&fd, file, O_WRONLY|O_CREAT|O_BINARY, 0, 0600);

手元の環境では,この状態でもまだ make 中にエラーが発生しているのですが,ライブラリ自身の make は成功しているようなので取り合えず無視します.make に成功すると out32/libeay32.lib, out32/ssleay32.lib と言う 2 つの lib ファイルが生成されるので,これらを BCB55\Lib にコピーします.また,inc32 フォルダに openssl フォルダが存在するので,これをフォルダごと BCB55\Include にコピーします.

*1:Borland の最新版って 5.5 で良いんでしたっけ?