# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz# tar xvf autoconf-2.69.tar.gz# cd autoconf-2.69# ./configure --prefix=/apps/bread // 设置安装路径# make -j4# make install# which autoconf // 验证安装成功
# wget http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz# tar xvf automake-1.15.tar.gz# cd automake-1.15# ./configure --prefix=/apps/bread
// 修改 Makefile 查找 /doc/automake-$(APIVERSION)
// doc/automake-$(APIVERSION).1: $(automake_script) lib/Automake/Config.pm
// $(update_mans) automake-$(APIVERSION) --no-discard-stderr
// (3686行,加上--no-discard-stderr)# make -j4# make install# which automake
gcc安装需要依赖automake-1.15以上版本
GCC 安装
# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-9.1.0/gcc-9.1.0.tar.xz# tar xvJf gcc-9.1.0.tar.xz // -j是调用bzip2解缩文件# cd gcc-9.1.0
// 报错error: Cannot download gmp-6.1.0.tar.bz2 from ftp://gcc.gnu.org/pub/gcc/infrastructure/的时候,
// vim contrib/download_prerequisites 改base_url为 https://gcc.gnu.org/pub/gcc/infrastructure/
// 如果报证书过期,可以在遍历url的时候,改成 ${base_url}${ar} --no-check-certificate,大概是222行(加了选项参数之后就不要引号了)。
# sh contrib/download_prerequisites // 下载gcc的一些依赖(主要是gmp-6.1.0.tar.bz2 isl-0.18.tar.bz2 mpc-1.0.3.tar.gz mpfr-3.1.4.tar.bz2)# mkdir build# cd build# ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --prefix=/apps/bread# make -j4 // make j4失败的话,可以试试make,本机-j4也要一个小时...# make install# which gcc
/apps/bread/bin/gcc
GCC9.1版本完整支持 C++ 11,C++ 14,C++ 17,而且错误提示更友好
GCC安装的时间会比较长,大概半小时~2小时,取决于机器性能,需要耐心等待
GDB安装
# wget http://ftp.gnu.org/gnu/gdb/gdb-8.3.tar.xz# tar xvf gdb-8.3.tar.xz# cd gdb-8.3# ./configure --prefix=/apps/bread# make -j4# make install# which gdb
由于8.3版本需要依赖gcc支持c++11,gdb必须等gcc安装完之后再安装
CMake安装
# wget https://github.com/Kitware/CMake/releases/download/v3# .14.5/cmake-3.14.5.tar.gz# tar xvf cmake-3.14.5.tar.gz# cd cmake-3.14.5# ./configure --prefix=/apps/bread# make -j4# make install# which cmake
安装boost库
# yum -y install boost-devel
安装yaml-cpp
方式一:下载的是最新版本0.7.0
注:该方式在自己测试程序中用cmake编译失败(因为cmake用到的是系统自带的默认路径的g++ 4.8.5),要用自己上面安装的g++9.1.0。
# cd /soft# git clone https://github.com/jbeder/yaml-cpp.git# cd yaml-cpp# mkdir build# cd build# cmake .. -DYAML_BUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/apps/bread# make -j4 & make install
方式二:下载的是无需依赖于boost的版本0.6.0
通过 https://codeload.github.com/jbeder/yaml-cpp/tar.gz/refs/tags/yaml-cpp-0.6.0 下载得到 yaml-cpp-yaml-cpp-0.6.0.tar.gz,
将 yaml-cpp-yaml-cpp-0.6.0.tar.gz 拷贝进虚拟机 /home/bread
注:该方式在自己测试程序中用cmake编译成功(因为cmake用到的是系统自带的g++ 4.8.5),用自己上面安装的g++9.1.0编译失败。
# cd /home/bread# mv yaml-cpp-yaml-cpp-0.6.0.tar.gz /soft# cd /soft# tar xvf yaml-cpp-yaml-cpp-0.6.0.tar.gz# cd yaml-cpp-yaml-cpp-0.6.0# mkdir build# cd build# source /etc/profile# cmake .. -DYAML_BUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/apps/bread# make -j4 & make install
Ragel安装
# wget http://www.colm.net/files/ragel/ragel-6.10.tar.gz# tar xvf ragel-6.10.tar.gz# cd ragel-6.10# ./configure --prefix=/apps/bread# make -j4 & make install# which ragel
$ cd /home/bread/workspace/awesome-sylar
$ doxygen -g -s // 生成 Doxyfile 文件,-s为simple,-g为generate
注意要修改 vim Doxyfile 其中的属性 RECURSIVE = YES
$ doxygen // 生成两个文件夹 html 和 latex
代码补全设置
1. 假设项目代码在 /home/bread/workspace/awesome-sylar,则在该目录下执行
$ vctags
会在该目录下生成 tags 文件
2. 然后在 vim ~/.vimrc,在文件适当的位置加上
settags+=~/workspace/awesome-sylar
3. vim insert模式下,Ctrl n就能全能补全。
配置DoxygenToolkit.vim
$ git clone https://github.com/vim-scripts/DoxygenToolkit.vim
$ cd DoxygenToolkit.vim
$ cd plugin
$ cp DoxygenToolkit.vim /home/bread/.vim/plugin
// 然后在 ~/.vimrc 配置文件加上下面的内容:
""DoxygenToolkit
let g:DoxygenToolkit_briefTag_pre ="@brief\t"let g:DoxygenToolkit_paramTag_pre ="@param\t"let g:DoxygenToolkit_returnTag ="@return\t"let g:DoxygenToolkit_authorName="L-ge"let g:DoxygenToolkit_fileTag="@filename\t"let g:DoxygenToolkit_dateTag ="@modify\t"let g:DoxygenToolkit_classTag ="@class\t"let g:DoxygenToolkit_authorTag ="@author\t"
完成后,可以在 vim normal 模式下输入
:Dox // 函数参数
:DoxAuthor // 作者信息
:DoxLic // 许可声明
安装 man 手册
$ sudo yum install man-pages
安装 Zlib
$ cd /soft
$ wget http://www.zlib.net/fossils/zlib-1.2.11.tar.gz
$ tar xvf zlib-1.2.11.tar.gz
$ ./configure --prefix=/apps/bread
$ make&makeinstall
安装 redis
// 不知道为啥在soft目录安装,即使是安装了tcl,make test也是报错说缺失。
// 怀疑是权限问题,因此在/home/bread/目录下安装redis成功。
$ cd /home/bread
$ mkdir soft
$ cd /soft
$ wget https://download.redis.io/releases/redis-5.0.14.tar.gz
$ tar xvf redis-5.0.14.tar.gz
$ cd redis-5.0.14
$ make // 如果make失败报错缺失jemalloc,可以先make distclean
$ maketest
// 报错:You need tcl 8.5 or newer in order to run the Redis test
// 报错:*** [err]: Active defrag big keys in tests/unit/memefficiency.tcl Expected condition ‘$max_latency<=120’ to be true(137<=120)
// 解决:vim tests/unit/memefficiency.tcl 改成 max_latency <=150
$ cd..
$ wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
$ tar xvf tcl8.6.1-src.tar.gz
$ cd tcl8.6.1/unix
$ ./configure --prefix=/apps/bread
$ make&makeinstall
$ cd /home/bread/soft/redis-5.0.14
$ maketest
$ makeinstallPREFIX=/apps/bread // 把redis安装到系统中(PREFIX为安装路径)
// 最后能在 /apps/bread/bin 目录下找到 redis_server 等可执行文件。
// 但仍然有问题,因为 /apps/bread/bin 的文件都是root权限的,普通用户使用redis-server时,将没有权限持久化(生成rdb文件需要写磁盘权限)。
// 因此,再将 makeinstallPREFIX=/home/bread/soft 目录下,方便需要的时候cp过去。
安装 hiredis
# cd /home/bread/soft# git clone https://github.com/redis/hiredis.git // 如果 Failed connect to github.com:443; 多试几次就行# cd hiredis# mkdir build# cd build# cmake .. -DCMAKE_INSTALL_PREFIX=/apps/bread# make# make install
安装 json-cpp
// 用这个版本会有问题:https://github.com/open-source-parsers/jsoncpp/archive/refs/tags/1.9.5.tar.gz
// 报错 ../lib/libsylar.so:对‘Json::Value::isMember(std::string const&) const’未定义的引用
// 原因未知
# cd /home/bread/soft# wget https://github.com/open-source-parsers/jsoncpp/archive/refs/tags/00.11.0.tar.gz# tar xvf 00.11.0.tar.gz# cd jsoncpp-00.11.0# mkdir build# cd build# source /etc/profile# cmake .. -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/apps/bread# make -j4 & make install