博客和知乎上面这两个帖子提供了部分思路,但是我仍然编译失败,参考解决方案,最终编译成功,做个记录,留给有用的人,代码片段转载自各个博客,并保留原链接地址
https://zhuanlan.zhihu.com/p/73590442 提供错误解决方案
https://blog.csdn.net/qq_28385535/article/details/83213822 提供安装思路
服务器环境 阿里云轻量应用服务器,1核1G 40G硬盘(没钱买高配)
系统环境 Aliyun Linux 2.19.03
首先, 编译的时候需要内存比较多,因为没钱,所以。用的虚拟内存。。如果你的内存空间大于8GB,你可以尝试直接进行编译
虚拟内存设置步骤如下(内存足够请无视)
我的虚拟内存配置15G
查看内存:free -m , -m是显示单位为MB,-g单位GB
创建一个文件:touch /root/swapfile
使用dd命令,来创建大小为2G的文件swapfile:
dd if=/dev/zero of=/root/swapfile bs=64M count=240 //命令执行完需要等待一段时间
if表示input_file输入文件
of表示output_file输出文件
bs表示block_size块大小
count表示计数。
这里,我采用了数据块大小为64M,数据块数目为240,这样分配的空间就是15G大小。
格式化交换文件:mkswap /root/swapfile
启用交换文件:swapon /root/swapfile
开机自动加载虚拟内存,在/etc/fstab文件中加入如下命令:
/root/swapfile swap swap defaults 0 0
重启后生效reboot
如果要删除交换分区和交换文件,逆着上面的顺序操作:
先删除/etc/fstab文件中添加的交换文件行
停用交换文件swapoff /root/swapfile
删除交换文件rm -fr /root/swapfile
作者:Jarhf
链接:https://www.jianshu.com/p/fae46241ba0c
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
linux 编译需要将GLIBC弄成2.23版本,如果你是这个版本请无视,版本更高,我也不清楚能否可行
步骤如下(先开两个终端窗口)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_20989105/article/details/90712139
注意:Centos 为了稳定使用的glibc版本通常比较低。而安装有些程序需要依赖新版本。升级glibc需要慎重,因很多人升级失败后导致系统不能用了。
本人亲测,升级了多台机器,全部升级成功。
glibc简介
glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个操作系统。
查看系统glibc库版本可使用如下命令:
$ strings /lib64/libc.so.6 |grep GLIBC_
大家在遇到glibc库问题时候,可以先考虑下为什么要升级GLIBC库,能够通过其他影响性相对小的方式:
在低版本的系统编译自己的产品,如果自己的产品确实不需要新版才支持的新特性
用版本高的系统来编译,比如ubuntu,和centos的新版,但可能需要部署到较低版本,那么可以考虑用mock等技术制作更好的安装包,把依赖打入包内
利用容器技术,如Docker,在低版本的操作系统内,轻量级的隔离出一个虚拟运行环境,适应你的程序。
确认无法解决,再考虑升级GLIBC库,我升级该库是由于在tensorflow1.13.1版本运行报错:
ImportError: /lib64/libm.so.6: version `GLIBC_2.23' not found
升级步骤
1、 首先下载对应版本的安装包
# wget https://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz
2、解压、新建编译目录目录
# tar xf glibc-2.23.tar.gz
# cd glibc-2.23/
# mkdir glibc-build
# cd glibc-build (一定要在新建的目录中操作)
3、安装
# ../configure --prefix=/usr
# make
# make install
在make install 时可能会跳出错误(类似的应该是因为软链接的版本不对造成的)
gawk '/\.gnu\.glibc-stub\./ { \
sub(/\.gnu\.glibc-stub\./, "", $2); \
stubs[$2] = 1; } \
END { for (s in stubs) print "#define __stub_" s }' > /root/glibc-2.23/glibc-build/math/stubsT
gawk: error while loading shared libraries: /lib64/libm.so.6: invalid ELF header
make[2]: *** [/root/glibc-2.23/glibc-build/math/stubs] Error 127
make[2]: Leaving directory `/root/glibc-2.23/math'
make[1]: *** [math/subdir_install] Error 2
make[1]: Leaving directory `/root/glibc-2.23'
make: *** [install] Error 2
解决办法(在另外的窗口执行):
# cd /lib64
# unlink libm.so.6
# ln -s libm-2.23.so libm.so.6
然后再次执行make install
看到如下信息就是安装成功了
LD_SO=ld-linux-x86-64.so.2 CC="gcc" /usr/bin/perl scripts/test-installation.pl /root/glibc-2.23/glibc-build/
Your new glibc installation seems to be ok.
make[1]: Leaving directory `/root/glibc-2.23'
4、验证
# ldd --version
ldd (GNU libc) 2.23
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
升级成功!
————————————————
版权声明:本文为CSDN博主「Little Programmer」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_20989105/article/details/90712139
检测你的CXXABI版本(具体需要的版本号记不清楚了,应该是1.3.8)
1,通过下面的命令查看/usr/lib64/下的动态库版本
strings /usr/lib64/libstdc++.so.6 | grep 'CXXABI'
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
1.1 通过下面的命令查看gcc最新态库版
find / -name "libstdc++.so.*"
2, 从网上下载所需要的libstdc++.so.6.0.22版本。
3, libstdc++.so.6.0.22拷贝到/usr/lib64目录下。
cp libstdc++.so.6.0.22 /usr/lib64/
4, 删除原来的libstdc++.so.6符号连接。
rm -rf libstdc++.so.6
5, 新建新符号连接。
ln -s libstdc++.so.6.0.22 libstdc++.so.6
作为好人,当然要提供libstdc++.so.6.0.22下载连接:
https://pan.baidu.com/s/1H2vv_XGQq1MkW-nUsp62nQ
作者:yemazhuxing
来源:CSDN
原文:https://blog.csdn.net/yemazhuxing/article/details/80399595
版权声明:本文为博主原创文章,转载请附上博文链接!
作者:萤火虫de梦
链接:https://www.jianshu.com/p/df8e82ade760
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
一、安装编译依赖环境
我的gcc 版本4.8.5
bison 版本 3.0.4
cmake 版本3.7.2
python 版本 3.7
jdk 版本1.8
yum install -y gcc-c++
yum install -y automake
yum install -y bison
yum install -y cmake
yum install -y git
yum install -y java-1.8.0-openjdk
安装python 3.7
yum install libffi-devel
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar -xzvf Python-3.7.1.tgz
cd Python-3.7.1
yum install gcc* glien* -y
./configure --prefix=/usr/local/python3.7
make
make install
二、下载AnyQ到服务器
git clone https://github.com/baidu/AnyQ.git
三、修改配置
修改AnyQ/cmake/external下的xgboost.cmake文件,可以直接复制粘贴,
注意:
INSTALL_COMMAND cd ${XGBOOST_INSTALL_DIR} && make -j1 这里的-j1是因为我的服务器只有一个cpu核心,源文件是-j4
以下是文件内容
INCLUDE(ExternalProject)
SET(XGBOOST_SOURCES_DIR ${THIRD_PARTY_PATH}/xgboost)
SET(XGBOOST_INSTALL_DIR ${XGBOOST_SOURCES_DIR}/src/xgboost)
ExternalProject_Add(
extern_xgboost
${EXTERNAL_PROJECT_LOG_ARGS}
DOWNLOAD_DIR ${XGBOOST_SOURCES_DIR}/src/
DOWNLOAD_COMMAND git clone --recursive https://github.com/dmlc/xgboost.git && cd xgboost && git checkout v0.81
DOWNLOAD_NO_PROGRESS 1
PREFIX ${XGBOOST_SOURCES_DIR}
BUILD_COMMAND ""
UPDATE_COMMAND ""
CONFIGURE_COMMAND ""
INSTALL_COMMAND cd ${XGBOOST_INSTALL_DIR} && make -j1
BUILD_IN_SOURCE 1
)
add_custom_command(TARGET extern_xgboost POST_BUILD
COMMAND mkdir -p third_party/lib/
COMMAND mkdir -p third_party/include/
COMMAND cp -r ${XGBOOST_INSTALL_DIR}/include/* third_party/include/
COMMAND cp -r ${XGBOOST_INSTALL_DIR}/lib/* third_party/lib
COMMAND cp ${XGBOOST_INSTALL_DIR}/rabit/lib/librabit.a ${XGBOOST_INSTALL_DIR}/dmlc-core/libdmlc.a third_party/lib/
COMMAND cp -r ${XGBOOST_INSTALL_DIR}/src third_party/
COMMAND cp -r ${XGBOOST_INSTALL_DIR}/dmlc-core/include/* ${XGBOOST_INSTALL_DIR}/rabit/include/* third_party/include/
)
四、配置github加速(可选操作)
我用的是更改hosts文件方法,如果你有更好的请告诉我,谢谢
vi /etc/hosts
把下面的东西粘进去
# GitHub
151.101.44.249 github.global.ssl.fastly.net
192.30.253.113 github.com
103.245.222.133 assets-cdn.github.com
23.235.47.133 assets-cdn.github.com
203.208.39.104 assets-cdn.github.com
204.232.175.78 documentcloud.github.com
204.232.175.94 gist.github.com
107.21.116.220 help.github.com
207.97.227.252 nodeload.github.com
199.27.76.130 raw.github.com
107.22.3.110 status.github.com
204.232.175.78 training.github.com
207.97.227.243 www.github.com
185.31.16.184 github.global.ssl.fastly.net
185.31.18.133 avatars0.githubusercontent.com
185.31.19.133 avatars1.githubusercontent.com
wq保存文件
重启网络服务 service network restart
下载速度从15K提升到了50K ,感觉快了不少。。。
五、进行编译
在AnyQ目录中执行
mkdir build && cd build && cmake .. && make
漫长的等待。。。。。
注意事项:
在编译过程中,会遇到多次git clone下载停止的情况,此时只需Ctrl+C暂停程序执行,
重新执行cmake .. && make即可。这个过程需要反复进行,直到成功为止。
一旦git clone失败 可以在 AnyQ/build目录下执行 cmake .. && make
我的服务器比较渣,编译时间很久。用了将近30多个小时。。。。
编译过程中会有许多的警告,请无视他。。。。。
如果编译顺利完成,在最后你应该能看到如下图片
此时AnyQ已经顺利编译成功,build 目录下面应该有run_server文件存在
注:此时没有example文件存在,所以./run_server会执行失败
解决方法:
# 获取anyq定制solr,anyq示例配置
cp ../tools/anyq_deps.sh .
sh anyq_deps.sh
# 启动solr, 依赖python-json, jdk>=1.8
cp ../tools/solr -rp solr_script
sh solr_script/anyq_solr.sh solr_script/sample_docs
耐心等待他完成,example获取完成之后,可以正常启动服务了
./run_server
结束
如果对你有用,请点个赞吧