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

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

centos 6.8 64-bit + tmux release 2.3

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.Po
control.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 once
control.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 exit status
make: *** [tmux] Error

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发布时间接近的版本试试看。

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

这是我亲身经历的过程。能力越强的人,越容易陷入到第一种思路中不可自拔。遇到问题就钻进去,而且绝大部分情况下也都解决了。
这会给人一种错觉,我很厉害,我很努力,我是牛人。可是这些问题真的那么重要吗? 这些问题真的没有办法绕过去吗?花费时间解决这些无穷无尽的问题有多大的意义呢?

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

centos 6.x下编译安装tmux 2.3版本问题记录

不要着急改代码,先想想--centos 6.8下编译安装tmux的更多相关文章

  1. CentOS 6.4下编译安装MySQL 5.6.14

    概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server ...

  2. CentOS 6.4下编译安装MySQL 5.6.14 (转)

    CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm ...

  3. 0622 CentOS 6.4下编译安装MySQL 5.6.14

    转自http://www.cnblogs.com/xiongpq/p/3384681.html 概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版 ...

  4. CentOS 6.4下编译安装MySQL 5.6.16

    一.卸载旧版本号MySql 1.rpm卸载: 1> 检查安装包: rpm -qa | grep mysql 2> 普通删除: rpm -e mysql-5.6.16.rpm 3> 强 ...

  5. centos 6.5下编译安装、配置高性能服务器Nginx

    1.nginx是什么? Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力 ...

  6. CentOS 6.4下编译安装 gcc-4.8.0(转)

    转:http://www.centoscn.com/image-text/install/2014/0807/3454.html 1.首先下载源代码 wget http://ftp.gnu.org/g ...

  7. radhat 6.4/centos 6.4 下编译安装 最新ruby 2.1.5

    #安装编译环境 yum groupinstall "Development tools" 或者 yum install gcc gcc-c++ gcc-g77 flex bison ...

  8. CentOS 7.2下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1

    一.安装前的准备工作 1.yum update    #更新系统 2.yum install gcc gcc-c++ autoconf automake cmake bison m4 libxml2  ...

  9. CentOS 6.5 下编译安装 Nginx 1.8.0

    转自:https://i.cnblogs.com/EditPosts.aspx?postid=8303227&update=1 安装编译依赖的包 yum -y install gcc gcc- ...

随机推荐

  1. HTML中上传与读取图片或文件(input file)----在路上(25)

    input file相关知识简例 在此介绍的input file相关知识为: 上传照片及文件,其中包括单次上传.批量上传.删除照片.增加照片.读取图片.对上传的图片或文件的判断,比如限制图片的张数.限 ...

  2. JavaScript Math和Number对象

    目录 1. Math 对象:数学对象,提供对数据的数学计算.如:获取绝对值.向上取整等.无构造函数,无法被初始化,只提供静态属性和方法. 2. Number 对象 :Js中提供数字的对象.包含整数.浮 ...

  3. Cocos2d Android 环境搭建

    1.在开始之前,需要先准备好资源如下,如果安卓开发环境有了直接装第3.4. 1.JDK      点击下载 (1.6) 2.ADT(已经自带Android SDK)点击下载 3.NDK 点击下载 4. ...

  4. inline-block元素间距问题的几种解决方案

    不知道大家有没有碰到过设置了display:inline-block;的几个相邻元素之间有几px间距的问题,这里提供几种简单实用的解决方法,希望能够帮到大家!   方法1. 将<li>标签 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. Phantomjs+Nodejs+Mysql数据抓取(2.抓取图片)

    概要 这篇博客是在上一篇博客Phantomjs+Nodejs+Mysql数据抓取(1.抓取数据) http://blog.csdn.net/jokerkon/article/details/50868 ...

  7. APP多版本共存,服务端如何兼容?

    做过APP产品的技术人员都知道,APP应用属于一种C/S架构的,所以在做多版本兼容,升级等处理则比较麻烦,不像web应用那么容易.下面将带大家分析几种常见的情况和应对方式: 小改动或者新加功能的 这种 ...

  8. win10上部署Hadoop-2.7.3——非Cygwin、非虚拟机

    开始接触Hadoop,听人说一般都是在Lunix下部署Hadoop,但是本人Lunix不是很了解,所以Google以下如何在Win10下安装Hadoop(之后再在Lunix下弄),找到不少文章,以下是 ...

  9. Git学习笔记一:新建本地仓库及初始化

    1.百度搜索Git下载安装,直接按默认选项安装即可. 例如:Git-2.7.2-32-bit_setup.1457942412.exe 2.配置Git信息,建立版本仓库 (Alt+PrintScerr ...

  10. CentOS 7 安装出现 /dev/root does not exits 导致无法安装的问题

    本人在官网下的是这个 CentOS-7-x86_64-DVD-1611.iso ,然后用UltraISO 9.6制作的U盘启动盘,不过在安装的时候出现了这个错误, 然后也是搜了好久,试了一下,下面这个 ...