ここでは、OSX でこのコンパイルを行うために克服する必要があるいくつかの問題があります。以下の手順は、El Capitan (私の場合は 10.11.1) で実行していることを前提としていますが、バージョンが異なると、それらからいくらかのマイレージが得られる場合があります。
まず、Xcode は現在 Apple の LLVM Compiler をデフォルトの C++ コンパイラとして使用しています。ただし、これは、POD 以外の可変長配列のサポートなど、GCC の拡張機能の一部をサポートしていません。
これを回避するために、GCC をインストールしてコンパイルしました。まだインストールしていない場合は、Homebrewをインストールしてから、最新の GCC コンパイラを次のようにインストールします。
$ brew install gcc
執筆時点では、これにより GCC v5.2.0 がインストールされます。これで最初の問題は解決するはずですが、すぐに他の人に影響を与えてしまいます!
次の問題は、含まれている libqc.a を x86_64 用に再コンパイルする必要があることです。<base_dir>/qc/Makefile
そのため、次の変更を加えてファイルを変更する必要があります。
...
# Add:
CXX = /usr/local/Cellar/gcc/5.2.0/bin/g++-5
CXXFLAGS = $(ARCHOPT) -c -pedantic -Wall $(DEBUG) $(PRGOPT)
...
次に再構築しlibqc.a
ます:
$ cd qc; make clean; make
すべてがうまくいけば、ピカピカの新しいlibqc.a
.
最後に、メインの Makefile<base_dir>/Makefile
を次のように変更します。
...
# Comment out:
#PLOPT = -DQCL_PLOT
#PLLIB = -L/usr/X11/lib -lplotter
...
# Comment out:
#RLOPT = -DQCL_USE_READLINE
#RLLIB = -lreadline
#RLLIB = -lreadline -lncurses
...
# Comment out:
#CXX = g++
#CPP = $(CC) -E
#CXXFLAGS = -c $(ARCHOPT) $(DEBUG) $(PLOPT) $(RLOPT) $(IRQOPT) $(ENCOPT) -I$(QCDIR) -DDEF_INCLUDE_PATH="\"$(QCLDIR)\""
#LDFLAGS = $(ARCHOPT) -L$(QCDIR) $(DEBUG) $(PLLIB) -lm -lfl -lqc $(RLLIB)
# Add:
CXX = /usr/local/Cellar/gcc/5.2.0/bin/g++-5
CPP = $(CC) -E
CXXFLAGS = -c $(ARCHOPT) $(DEBUG) $(PLOPT) $(RLOPT) $(IRQOPT) $(ENCOPT) -I$(QCDIR) -DDEF_INCLUDE_PATH="\"$(QCLDIR)\""
LDFLAGS = $(ARCHOPT) -L$(QCDIR) $(DEBUG) $(PLLIB) -lm -ll -lqc $(RLLIB) -lc++
...
これで、指示に従ってメイン アプリケーションをビルドできるようになります。
$ make clean; make; make install