最近要弄一个usdt的对接的功能,于是开启了我的源码编译之旅,记录下我的心里历程
一路艰辛,centos下的源码编译比我想象的难,问题不断,尤其是是centos的系统版本还这么低,又不想更换系统,只好一个个解决
最开始在网上找了很多资料 开始一步步按照流程走,指路灯—->
https://blog.csdn.net/koko2015c/article/details/75307418;
这里要说明一点,最开始我看的不是这个链接 但是那个链接误导了我,于是我不贴上来了,说下我的问题
本来是可以yum install git 的 但是我没有用Git下载 我在本地windows版本用git下载 然后上传到服务器这样做的后果是让我出现了一系列的问题
1. LINUX权限-bash: ./autogen.sh: Permission denied
在本目录下 运行下 chmod u+x *.sh 问题解决
2.脚本异常
shell脚本异常“bash: ./autogen.sh: /bin/sh^M: bad interpreter: No such file or directory”
这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。 因为我是用git在windows下载 然后上传到Linux上的 所以会出现编码问题。
指路灯:https://blog.csdn.net/houqizhixiu12/article/details/51969852
解决方式
#sh>vi filename
利用如下命令查看文件格式
:set ff 或 :set fileformat
可以看到如下信息
fileformat=dos 或 fileformat=unix
利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
:wq (存盘退出)
最后再执行文件
#sh>./filename
问题解决
3.然后运行
./autogen.sh 报一系列警告 加error
看了下错误什么 说是要升级autoconf 于是升级autoconf之路
升级之后 问题继续
4.
autogen.sh错误:可能是未定义的宏:PKG_CONFIG_LIBDIR
百度了n多资料后终于找到解决方案 指路灯->
https://github.com/bitcoin/bitcoin/issues/6432
解决方法
将这三行代码注释即可解决 到此为此 问题继续
5. ./autogen.sh: line 44: libtoolize: command not found
安装libtool* 问题继续
6.Warning: RPMDB altered outside of yum.
rm -rf /var/lib/yum/history/*.sqlite
7.
configure: error: You need a C++ compiler for C++ support
接着升级gcc 以支持c++11
centos千万不要用用百度的某些答案里的先装GMP、MPFR和MPC
我亲身试过 错误很复杂很麻烦 到最后装MPC的时候会报错 修改源码 很奇葩的问题
我记得报了一个这样的错
static declaration follows non-static declaration
有些答案说
原因是 调用的静态函数没有先声明一下,就是它定义在你调用之后啦。
解决:调用之前声明一下这个函数。
但是看源码他其实已经是声明了的
我直接把static 删掉 错误就好了
另外一个简单的方法升级gcc 指路灯->
https://www.cnblogs.com/lizhenghn/p/3550996.html
8.
configure: error: libdb_cxx headers missing (netbsd)
./configure LDFLAGS="-L/usr/local/BerkeleyDB.4.8/LIB/" CPPFLAGS="-I/usr/local/BerkeleyDB.4.8/include/"
是因为找不到它,所以configure的时候要加上他的路径 问题继续
9.
已经安装了libevent 还是报libevent not found
其实我已经安装了libevent 后来试着提升了版本 问题解决
最后运行
开始升级php7 等待后续