博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不要着急改代码,先想想--centos 6.8下编译安装tmux
阅读量:5173 次
发布时间:2019-06-13

本文共 2850 字,大约阅读时间需要 9 分钟。

诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位。写博客是我2017年定下的目标之一,希望我会坚持下去。

最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Blog,还是先解决问题。

centos 6.8 64-bit +

centos软件源中没有tmux,rpm search也没有找到相应的包,只能编译安装。

编译安装过程中缺少libevent等库的问题怎么解决就不讲了,解决完这些常规问题后,编译报错。

depbase=`echo control.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\	gcc -DPACKAGE_NAME=\"tmux\" -DPACKAGE_TARNAME=\"tmux\" -DPACKAGE_VERSION=\"2.3\" -DPACKAGE_STRING=\"tmux\ 2.3\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"tmux\" -DVERSION=\"2.3\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DIRENT_H=1 -DHAVE_FCNTL_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_PATHS_H=1 -DHAVE_PTY_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_DIR_H=1 -DHAVE_TERM_H=1 -DHAVE_DIRFD=1 -DHAVE_FLOCK=1 -DHAVE_PRCTL=1 -DHAVE_SYSCONF=1 -DHAVE_CFMAKERAW=1 -DHAVE_NCURSES_H=1 -DHAVE_B64_NTOP=1 -DHAVE_FORKPTY=1 -DHAVE_DAEMON=1 -DHAVE_SETENV=1 -DHAVE_ASPRINTF=1 -DHAVE_STRCASESTR=1 -DHAVE_STRSEP=1 -DHAVE_CFMAKERAW=1 -DHAVE_OPENAT=1 -DHAVE_DECL_OPTARG=1 -DHAVE_DECL_OPTIND=1 -DHAVE_DECL_OPTRESET=0 -DHAVE_BSD_TYPES=1 -DHAVE___PROGNAME=1 -DHAVE_PROGRAM_INVOCATION_SHORT_NAME=1 -DHAVE_PR_SET_NAME=1 -DHAVE_PROC_PID=1  -I.   -DTMUX_CONF="\"/etc/tmux.conf\""  -iquote.    -D_GNU_SOURCE -std=gnu99 -O2     -MT control.o -MD -MP -MF $depbase.Tpo -c -o control.o control.c &&\	mv -f $depbase.Tpo $depbase.Pocontrol.c: In function ‘control_callback’:control.c:64: warning: implicit declaration of function ‘evbuffer_readln’control.c:64: error: ‘EVBUFFER_EOL_LF’ undeclared (first use in this function)control.c:64: error: (Each undeclared identifier is reported only oncecontrol.c:64: error: for each function it appears in.)make: *** [control.o] Error 1

 读源代码解决问题肯定不现实啦,那就google吧。恩,貌似需要libevent2,那就安装吧,yum install libevent2-devel. 嗯哼,竟然与libevent-devel冲突,那么先卸载libevent-devel,再编译一下

tty.o: In function `tty_cmd_setselection':tty.c:(.text+0x500): undefined reference to `__b64_ntop'collect2: ld returned 1 exit statusmake: *** [tmux] Error 1

WTF,继续google,原来makefile中少了一个链接引用

LIBS = -lutil -lcurses -levent -lrt -lresolv

大功告成,终于搞定了。

如果你经常按照我上面的思路工作,那么你也许会经常遇到这样的场景。

可以下班了吧,等等,手上还有三个BUG没解,明天还要交一份报告,我去,事情太多了,程序员太苦逼了,每天这么多事,老子辞职不干了。

很多人的思维方式是遇到问题解决问题,技术能力越高,解决的问题越多,就越自信,就越不怕问题。这是好事。

问题是解决这么个问题,花了几个小时(打个比方),得到了什么呢,是手头积攒的BUG要加班解决,是每天陷入这种google and fix的虚假的满足感。如果遇到冷门问题,google不到怎么办? 真的要去研究一遍源代码?

 

让我们换个思路考虑一下,有点经验的同学应该知道,开源软件编译报错不外乎这几种情况:

1. 软件不支持OS平台

2. 软件BUG

3. 使用了github上的非release版本

tmux 2.3版本是30 Sep,2016发布的,centos 6的发布时间早了去了,很明显,tmux最新的版本与centos 6.8不兼容,那么找一个与centos 6发布时间接近的版本试试看。

,一次编译通过,分分钟搞定。

这是我亲身经历的过程。能力越强的人,越容易陷入到第一种思路中不可自拔。遇到问题就钻进去,而且绝大部分情况下也都解决了。

这会给人一种错觉,我很厉害,我很努力,我是牛人。可是这些问题真的那么重要吗? 这些问题真的没有办法绕过去吗?花费时间解决这些无穷无尽的问题有多大的意义呢?

人生这艘船在海上航行,短期的目标靠的是效率、长期的目标靠的是方向。想要走的远,在追逐每一条美人鱼前,请先想一想自己人生的方向。

 

转载于:https://www.cnblogs.com/redstar9451/p/6241283.html

你可能感兴趣的文章
Jmeter-【JSON Extractor】-响应结果中一级key取值
查看>>
mysql建库
查看>>
bzoj1066: [SCOI2007]蜥蜴
查看>>
jQuery自定义右键菜单
查看>>
mybatis实现延迟加载多对一
查看>>
JS拖拽,移动与拉伸
查看>>
Linux资源站
查看>>
一位辅导员写给毕业生的一封信
查看>>
浅说——查分约束
查看>>
网站性能工具-YSlow的23个规则-网站性能优化
查看>>
【JAVA错误笔记】 - Unable add facets project AnnotationWebService CXF 2-x Web Services
查看>>
SQL 2005 带自增列 带外键约束 数据导入导出
查看>>
mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
查看>>
链式队列
查看>>
快逸报表多数据源解决办法以及项目多数据源切换方法
查看>>
[转+]C语言复杂声明
查看>>
Android心得1.5--第一次搭建Android环境的心得和第一个应用程序部分代码解析
查看>>
SQL server int 转char类型
查看>>
hzwer模拟赛 感冒病毒
查看>>
浅谈WebService的版本兼容性设计
查看>>