configure: WARNING: ext/hash_map: present but cannot be compiledconfigure: WARNING: ext/hash_map: check for missing prerequisite headers?configure: WARNING: ext/hash_map: see the Autoconf documentationconfigure: WARNING: ext/hash_map: section "Present But Cannot Be Compiled"configure: WARNING: ext/hash_map: proceeding with the compiler's resultconfigure: WARNING: ## --------------------------------- ##configure: WARNING: ## Report this to zongdai@taobao.com ##configure: WARNING: ## --------------------------------- ##checking for ext/hash_map... noconfigure: error: in `/home/ha/tair':configure: error: hash_map not foundSee `config.log' for more details
此时,在确保安装了c++标准库。可使用yum install gcc-c++安装。如果单独安装gcc以及g++比较麻烦,幸运的是,为了能够编译Ubuntu的内核,Ubuntu提供了一个build-essential软件包。
查看该软件包的依赖关系,可以看到以下内容: $ apt-cache depends build-essential build-essential 依赖: libc6-dev 依赖: libc6-dev 依赖: gcc 依赖: g++ 依赖: make 依赖: dpkg-dev 也就是说,安装了该软件包,编译c/c++所需要的软件包也都会被安装。因此如果想在Ubuntu中编译c/c++程序,只需要安装该软件包就可以了。 安装方法如下: $sudo apt-get install build-essential安装了c++标准库后,应使用gcc-4.4.7版本,tfs与tair在该版本下可编译通过,淘宝默认的gcc为4.4.7版本。版本过高对语法检查过严,不能编译通过。 我用的是Ubuntu的15.04版本的,gcc版本是4.9.2.使用# gcc -v命令可查看gcc版本号:
gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
$sudo apt-get install gcc-4.4 $sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40 (这里“40” 是优先级,值越大优先级越高) $sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 (本机自带的设置为60更高的优先级) 选择系统默认的gcc $sudo update-alternatives --config gccThere are 2 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status------------------------------------------------------------* 0 /usr/bin/gcc-4.9 60 auto mode 1 /usr/bin/gcc-4.4 40 manual mode 2 /usr/bin/gcc-4.9 60 manual mode
默认系统用最高优先级的, 这里我们选择1就可以了 接下来,g++ 同样的步骤操作 $sudo apt-get install g++-4.4 $sudo apt-get install g++-4.4-multilib $sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 40 $sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 60 $sudo update-alternatives --config g++ Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/g++-4.6 60 auto mode 1 /usr/bin/g++-4.4 40 manual mode 2 /usr/bin/g++-4.6 60 manual mode 选择1. 如果想改为高版本的随时用update-alternatives --config 命令切换!转载于:https://www.cnblogs.com/wwha/p/5571454.html
相关资源:JAVA上百实例源码以及开源项目