centos使用libffm

如果你在使用centos6的时候,安装libffm出现各种问题,请直接到文章结尾查看解决方案,文章中间内容都是解决问题的流程。

下载gcc最新版

yum -y install gcc gcc-c++

wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.1/gcc-4.8.1.tar.gz

然后解压到文件夹
tar -xvzf gcc-4.8.1.tar.gz

进入解压缩之后的目录
cd gcc-4.8.1

然后执行下面的运行
./contrib/download_prerequisites

再返回上一层,建立build_gcc_4.8.1目录,这个目录和gcc-4.8.1平行
cd ..
mkdir build_gcc_4.8.1

进入刚建立的目录,并执行编译过程
cd build_gcc_4.8.1
../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib  
make -j23
make install

OK,在build_gcc_4.8.1中将gcc已经安装完成

确定新安装的GCC的路径,之前安装时记下最后mv时的路径即可,我是默认安在了/usr/local/bin
ls /usr/local/bin | grep gcc

执行
/usr/sbin/update-alternatives --install  /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc-4.8.1 40
gcc --version      #查看版本

/usr/sbin/update-alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++ 40
g++ --version     #查看版本


安装对应版本的glibc

查看现有版本的glibc, strings /lib64/libc.so.6 |grep GLIBC
下载对应版本:wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
解压缩:tar -zxvf glibc-2.17
进入文件夹创建build文件夹cd glibc-2.17 && mkdir build && cd build
配置:
../configure --prefix=/usr --disable-profile --enable-add-ons --enable-kernel=2.6.25 --libexecdir=/usr/lib/glibc

编译安装:make && make install
可以再用命令:strings /lib64/libc.so.6 |grep GLIBC查看

添加GLIBCXX_3.4.19的支持
注意,进入目录是,.libs是隐藏的:/home/build_gcc_4.8.1/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs

用下面的命令查看:
strings libstdc++.so.6.0.18|grep GLIBCXX
一般来讲,里面就有满足需要的GLIBCXX版本了。
然后,把该文件拷贝到了/usr/lib64下.
复制到/usr/lib64文件夹下:cp libstdc++.so.6.0.18 /usr/lib64/
添加执行权限:chmod +x /usr/lib64/libstdc++.so.6.0.18
删除原来的:rm -rf /usr/lib64/libstdc++.so.6
创建软连接:ln -s /usr/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6
可以查看是否有个版本:strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

这就Ok了。

================接下来说说如何源码编译安装gdb===============
1.下载源码包:
http://ftp.nluug.nl/gnu/gdb/gdb-7.8.2.tar.gz
2.解压源码包:
tar -zxvf gdb-7.8.2.tar.gz
3. cd gdb-7.8.2 && ./configure
4. make
此时会提示缺少一个库:configure: error: no termcap library found
5.下载termcap库源码:
 wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
tar -zxvf termcap-1.3.1.tar.gz
6.编译安装termcap库:
cd termcap-1.3.1&& ./configure
make && make install
7.重新跳到gdb源码目录编译安装:
 ./configure
make && make install
注意:默认安装在/usr/local/bin目录下,后面自己改环境变量就可以直接用了。
vi /etc/profile
export GDB_HOME=/usr/local/bin/gdb
export PATH=$GDB_HOME:$PATH
好了,现在可以正常使用gdb调试程序了:

之后使用gdb查看报错:
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./ffm-train -p criteo.va.r100.gbdt0.ffm criteo.tr.r100.gbdt0.ffm model'.
Program

terminated with signal SIGILL, Illegal instruction.
#0  0x000000000040a88e in Timer::toc() ()


解决方案:

网上搜索了很多内容,没有找到问题原因,
最后终于找到解决方法,就是使用CentOS7的系统,安装gcc、gcc-c++就可以了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值