redis2.3.7安装时出现undefined reference to `clock_gettime'
(转自:http://blog.csdn.net/qq_28779503/article/details/54844988)
undefined reference to `clock_gettime' 链接错误的解决思路
错误信息:
centos下安装Redis时报错,报错内容为:
- /home/wm/redis-3.2.7/deps/jemalloc/src/nstime.c:120: undefined reference to `clock_gettime'
发现是在链接的时候出错。经过查找发现clock_gettime在实时库librt(real time)里面,由于链接的时候没有链接这个库导致报错。
解决思路:
只需在我们运行的Makefile文件里面添加动态链接库librt ( -lrt ) ,重新编译即可。
解决方案:
1.查找实时库librt所在路径:
- [root@localhost redis-3.2.7]# find / -name '*librt*'
- /lib/librt-2.12.so
- /lib/i686/nosegneg/librt-2.12.so
- /lib/i686/nosegneg/librt.so.1
- /lib/librt.so.1
- /lib/rtkaio/librtkaio-2.12.so
- /lib/rtkaio/i686/nosegneg/librtkaio-2.12.so
- /lib/rtkaio/i686/nosegneg/librt.so.1
- /lib/rtkaio/librt.so.1
- /usr/lib/librt.so
- /usr/lib/pulse-0.9.21/modules/librtp.so
2.推测可知:librt.so为linkname,librt.so.1为soname,librt-2.12.so为realname
- [root@localhost redis-3.2.7]# ls -l /usr/lib/ |grep 'librt.so'
- lrwxrwxrwx. 1 root root 20 7月 18 2016 librt.so -> ../../lib/librt.so.1
- [root@localhost redis-3.2.7]# ls -l /lib/ |grep 'librt.so.1'
- lrwxrwxrwx. 1 root root 13 7月 13 2016 librt.so.1 -> librt-2.12.so
3.打开/home/wm/redis-3.2.7路径下的Makefile文件:
- vim /home/wm/redis-3.2.7/Makefile
文件内容:
- 1 # Top level makefile, the real shit is at src/Makefile
- 2
- 3 default: all
- 4
- 5 .DEFAULT:
- 6 cd src && $(MAKE) $@
- 7
- 8 install:
- 9 cd src && $(MAKE) $@
- 10
- 11 .PHONY: install
由注释可知:
这个Makefile是顶级的Makefile文件,真正的Makefile文件在src/ makefile路径下
4.打开/home/wangmao/redis-3.2.7/src/路径下的Makefile文件:
- vim /home/wangmao/redis-3.2.7/src/Makefile
从错误信息可知,该错误是编译/home/wm/redis-3.2.7/deps/jemalloc/src/nstime.c文件中的clock_gettime函数时未找到相应的动态链接库而发生的错误。
阅读Makefile文件后可推测应与jemalloc文件夹相关,所以:
- 105 ifeq ($(MALLOC),jemalloc)
- 106 DEPENDENCY_TARGETS+= jemalloc
- 107 FINAL_CFLAGS+= -DUSE_JEMALLOC -I../deps/jemalloc/include
- 108 FINAL_LIBS+= ../deps/jemalloc/lib/libjemalloc.a
- 109 FINAL_LIBS+= /usr/lib/librt.so #此路径加上librt.so
- 110 endif
5.保存Makefile文件后,重新执行Make命令即可成功编译。
另:附上Linux常用的库
libz 压缩库(Z)
librt 实时库(real time)
libm 数学库(math)
libc 标准C库(C lib)
redis2.3.7安装时出现undefined reference to `clock_gettime'的更多相关文章
- undefined reference to `clock_gettime
下面这个错误通常是因为链接选项里漏了-lrt,但有时发现即使加了-lrt仍出现这个问题,使用nm命令一直,会发现-lrt最终指向的文件没有包含任何symbol,这个时候,可以找相应的静态库版本libr ...
- [转] undefined reference to `clock_gettime'
下面这个错误通常是因为链接选项里漏了-lrt,但有时发现即使加了-lrt仍出现这个问题,使用nm命令一直,会发现-lrt最终指向的文件 没有包含任何symbol,这个时候,可以找相应的静态库版本lib ...
- Linux嵌入式学习-Mplayer交叉编译-undefined reference to `clock_gettime' MPlayer
編譯Mplayera. 配置.configure# ./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm --enable-static ...
- [QT_FFMPEG]学习问题: 刚开始移植ffmpeg,测试时出现 undefined reference to `avcodec_configuration()'
使用环境: window: win7 x64 QT: qt5.8.0 MinGW530 移植的教程: 流若浅 Qt ffmpeg环境搭建 : http://www.cnblogs.com/liuru ...
- CentOS安装libxml2报undefined reference to `gzopen64'
主要是记录一下安装时候踩的坑 CentOS在make libxml2的时候,会报这个错误 ./.libs/libxml2.so: undefined reference to `gzopen64' c ...
- gcc链接程序时出现undefined reference to""错误
如:: undefined reference to ‘mq_unlink',意思是指函数mq_unlink没有定义. 可以使用如下步骤找到该函数所在的库: 1).查找哪些库包含了或使用了该函数:gr ...
- 编译nginx时提示undefined reference to 'pcre_free_study' 的问题及解决
./configure --add-module=../ngx_devel_kit-0.2.19/ --add-module=../lua-nginx-module-0.9.19/ --with-l ...
- 解决ndk编译lua时遇到 undefined reference to '__srget'的问题
今天用ndk r10d版本编译lua时,遇到几个错误,提示没有找到__srget 没有定义,于是看了国外的大神的解决方法, 是因为ndk在r10c之后的版本已经将getc函数屏蔽了,所以导致编译器找不 ...
- darknet-yolov3使用opencv3.4.8时,undefined reference 'imshow()'、'waitKey()'、'nameWindows()'
解决办法:暴力卸载 卸载办法:进入到opencv3.4.8的安装目录下:make uninstall 然后重新安装了其他版本的,立马编译通过了.
随机推荐
- 跨平台C++开源代码的两种常用编译方式
作者:朱金灿 来源:http://blog.csdn.net/clever101 跨平台C++开源代码为适应各种编译器的编译,采用了两种方式方面来适配.一种是makefile方式.以著名的空间数据格式 ...
- EJB2.0版本的HelloWorld
EJB2.0版本的HelloWorld 虽然EJB3.1已经出来了,可是EJB2.0的项目还需要维护啊.下面写个简单EJB2.0的HelloWorld程序,练练手. 环境: JBoss 4.0 ...
- 洛谷 P1309 瑞士轮
题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低,但比赛过程往往十分 ...
- MIPS——分支语句
有关指令 li $t1,immediate #load immediate,立即数可正可负 la $t1,address #load address move $t1,$t2 #move $t2 to ...
- 第009课 gcc和arm-linux-gcc和MakeFile
from:第009课 gcc和arm-linux-gcc和MakeFile 第001节_gcc编译器1_gcc常用选项_gcc编译过程详解 gcc的使用方法 gcc [选项] 文件名 gcc常用选项 ...
- OracleDBConsole启动不了
今天要用OEM,然后去打开OracleDBConsoleXXX, 提示说什么么么2,然后就各种百度...最后发现...有断了网络连接之后就可以把它启动了...简直惨,不知道这是什么原理,还有Oracl ...
- zust_第二周——瞎扯系列
首先来原题列表: A:Gridland http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1037 B:HangOver htt ...
- Luogu P2397 yyy loves Maths VI (mode)
题目传送门 虽然只是一道黄题,但还是学到了一点新知识-- 摩尔投票法 用\(O(1)\)的内存,\(O(n)\)的时间来找出一串长度为n的数中的众数,前提是众数出现的次数要大于\(n/2\) 方法很简 ...
- sstable, bigtable,leveldb,cassandra,hbase的lsm基础
先看懂文献1和2 1. 先了解sstable.SSTable: Sorted String Table [2] [10] WiscKey: 类似myisam, key value分离, 根据ssd优 ...
- viewDidLoad、loadView
一.loadView永远不要主动调用这个函数.view controller会在view的property被请求并且当前view值为nil时调用这个函数.如果你手动创建view,你应该重载这个函数,且 ...