Ubuntu中GCC4.7下crypto++编译报错

手册/FAQ (311) 2016-04-29 09:41:47

 

Ubuntu12.04平台下当安装了GCC4.7后,通过修改

/usr/bin/gcc和/usr/bin/g++两个链接,使它们指向gcc4.7和g++4.7,这样gcc4.7就成了默认编译程序。

但是当使用了crypto++9的程序编译时,报错。原因是crypto++中有bug。

解决办法是,下载crypto++的最新代码:http://www.cryptopp.com/cryptopp562.zip

解压后

  1. unzip cryptopp562.zip -d cryptopp  

运行

  1. make  
  2. make install  

然后再创建一个链接:

  1. cd /usr/include/  
  2. ln -s cryptopp crypto++  

现在问题解决。

 

如果在KVM虚拟机里面编译,可能会遇到这种情况:

  1. root@dev:/usr/src/cryptopp# make  
  2. g++ -DNDEBUG -g -O2 -march=native -pipe -c 3way.cpp  
  3. 3way.cpp:1:0: error: CPU you selected does not support x86-64 instruction set  
  4.  // 3way.cpp - modifed by Wei Dai from Joan Daemen's 3way.c  
  5.  ^  
  6. make: *** [3way.o] Error 1  
  7.  

解决方法是去掉硬件加速指令,在GNUmakefile文件中,注释一行:

  1. ifneq ($(GCC42_OR_LATER),0)  
  2. ifeq ($(UNAME),Darwin)  
  3. CXXFLAGS += -arch x86_64 -arch i386  
  4. else  
  5. #CXXFLAGS += -march=native                                                                                                                                                                                             
  6. endif  
  7. endif  

 

Ubuntu 13.10 已经修复,用clang 3.4编译时只需要这样安装:

  1. apt-get install libcrypto++-dev  

 

THE END