尝试在Mac 10.11上安装QCL(Quantum Computation Language)时出错

时间:2016-02-20 12:25:25

标签: macos quantum-computing qcl

我正在尝试从this source安装QCL-0.6.4,但是当我在终端中使用make命令尝试时,我一直收到错误。

我来了this thread about installing QCL on OSX,但在尝试调整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];

对此的任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

这里有一些问题需要克服才能在OSX上进行编译。我的下面的说明假设您在El Capitan上运行(在我的实例中为10.11.1),但是对于不同的版本,您可能会从中获得一些milage。

首先,Xcode目前使用Apple的LLVM编译器作为默认的C ++编译器。但是,这不支持GCC的一些扩展,例如支持非POD可变长度数组。

为了解决这个问题,我安装并使用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