[转载]undefined reference to `memcpy@GLIBC_2.14'

转自:http://blog.sina.com.cn/s/blog_6c5a47d30102wfw9.html

undefined reference to `memcpy@GLIBC_2.14'

  (2016-04-26 17:01:21)
标签: 

杂谈

分类: 编程_Errors

image

原因

程序要调用XXX.so,而XXX.so的编译环境比当前系统版本要高。

查看现有系统的GLIBC库版本: strings /lib64/libc.so.6 |grep GLIBC

image

证实了确实没有GLIBC_2.14

解决办法:安装glibc

http://www.gnu.org/software/libc/ 下载源代码。我下载的版本是2.14,链接地址是http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz 【尽量和调用库版本一致】

[root@localhost ~]# tar xvf glibc-2.14.tar.gz                             ///< 解压
[root@localhost ~]# cd glibc-2.14                                            ///< 到解压目录下
[root@localhost glibc-2.14]# mkdir build                                   ///< 新建build目录
[root@localhost glibc-2.14]# cd ./build                                     ///< 到build目录下
[root@localhost build]# ../configure --prefix=/opt/glibc-2.14      ///< 配置安装路径,将安装在/opt/glibc-2.14目录下。不要安装在默认路径,以免破坏原有的GLIBC库造成其他程序异常
[root@localhost build]# make –j4                                            ///< make
[root@localhost build]# make install                                         ///< make install

遇到的问题:

最后一步make install报错: Can't open configuration file /opt/glibc-2.14/etc/ld.so.conf: No such file or directory

解决办法:在make install 前输入,touch /opt/glibc-2.14/etc/ld.so.conf,再make install

可能的问题:

1. 虚拟机的话要拷贝到系统里,不能共享

2. 注意账户权限,需在opt/glibc-2.14目录下新建文件夹

执行完之后查看:strings /opt/glibc-2.14/lib/libc.so.6 |grep GLIBC

image

使用

下面3种方法的任何一种均可

1. export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH

2. /opt/glibc-2.14/lib/libc.so.6 拷贝并重命名为/lib64/libc.so.6

3. 在makefile 编译的最后加上:   /opt/glibc-2.14/lib/libc.so.6

就能用啦啦啦~~~~~~

【有时可能存在不兼容,我用2.19替换2.12时报错了】

参考:http://my.oschina.net/zhangxu0512/blog/262275

原文地址:https://www.cnblogs.com/workingdiary/p/10396185.html