3

このソースから QCL-0.6.4 をインストールしようとしていmakeますが、ターミナルでコマンドを実行しようとするとエラーが発生し続けます。

OSXへのQCL のインストールに関するこのスレッドにたどり着きましたが、Makefile を調整しようとすると、常に次のエラーに遭遇します。

extern.cc:84:18: error: variable length array of non-POD element type     'tComplex'
  (aka 'complex<double>')
 tComplex u[dim][dim];
             ^
extern.cc:193:9: error: variable length array of non-POD element type 'term'
 term t[dim];
    ^
extern.cc:224:9: error: variable length array of non-POD element type 'term'
 term t[dim];

これに関するヘルプは大歓迎です。

4

1 に答える 1

2

ここでは、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
于 2016-02-24T11:07:22.087 に答える