Hi3516dv300搭建开发环境——编译osdrv(7)-mtd-utils2.0.2的automake安装
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
注意1:如果你要安装automake1.15.1,建议你的安装顺序为:M4 -> autoconf -> automake(一定要安照这个顺序,不然会出现很多错误,建议从下面的3)开始看)
,这关于这几个包以及相关下载地址会在下面有文字或图片解释.
有一个问题:我指定安装目录的时候比如安装m4和autoconf的时候为什么在/usr/local/建立名为m4文件夹,当m4安装到这个文件后为什么安装运行./configure --prefix=/usr/local/autoconf就一直提示要你安装m4,但是你都将他们安装在/usr/local/这同一目录下就不会出现该问题,我想是不是因为安装在不同目录系统是不是识别不了才出现这个问题,
注意2:下面的一、二、三、四的安装顺序是我按照说明文档的安装顺序,亲测这个顺序是有问题的,在其中我插入了遇到的一些问题,以及对问题的解决
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1、本文的autoconf的安装过程可以参考:https://www.cnblogs.com/xlwang1995/p/10604104.html 注意:只参考它的autoconf安装即可,不要按照它的顺序
2、本文automake1.15.1的安装与autoconf的安装类似
3、本文安装顺序参考自:https://blog.csdn.net/ubuntucc/article/details/9264165
一、mtd-utils2.0.2依赖以下几个库,以ubuntu为例,安装方式请参考下面命令:
sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config
二、由于mtd-utils2.0.2通过pkg-config工具检查各个库是否正常安装,因此请参考如下方式设置pkg-config工具搜索路径:
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig"
注:这一步可参考链接:https://blog.csdn.net/weixin_41041772/article/details/102767759
理解:输入指令:pkg-config --variable pc_path pkg-config
出现问题:pkg-config命令未发现,可以安装这个包,安装这个包后重新输入该指令,发现这个路径/usr/lib/x86_64-linux-gnu/pkgconfig
有了,故可进行下一步
三、mtd-utils2.0.2依赖于automake1.15.1版本,请参考如下方式安装automake1.15.1版本:
1、删除原有automake版本
sudo apt-get autoremove automake
2、下载1.15.1版本
1)Windows系统中使用浏览器访问automake工程url并下载对应源码包:
https://lists.gnu.org/archive/html/info-gnu/2017-06/msg00007.html
2)linux系统中可以使用下面命令下载:
wget ftp://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz
3、编译安装automake1.15.1
tar zxvf automake-1.15.1.tar.gz
cd automake-1.15.1/
./configure
注:安装到这一步出错了,原因是autoconf版本太低了,输入指令下载autoconf2.65,(我下载的为2.68),
1)输入下载的指令为:wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
2)解压到指定目录(我解压到root目录下),-C为指定路径命令
3)出现提示需要下载另一个包m4,同样用wget方法
4)这次解压用绝对路径,(绝对路径是不是为在prefix前面加两个减号)
指定解压位置:
指定安装路径:
最后安装编译:
4.1)执行到这一步出现三个错误:
4.2)第一个错误为:c:83:3:error:#error please port gnulib freadahead.c to your platf orm!Look at the..........
解决办法:在在该目录下的终端(就是从终端进入m4-1.4.14目录也行)
输入指令:
sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
注意:这指令里面的IO中的I为大写的i, lib/stdio-impl.h这里面的l位小写字母l
此步参考链接为:https://blog.csdn.net/Jun626/article/details/104870430
第二个为:error:get undeclared here (not in a function);did you mean......
出现这个问题,参考链接:https://blog.csdn.net/weixin_34168880/article/details/91842744
按照这个方法处理后,竟然又出现了两个错误
4.3)第三个为:/m4-1.4.14/src/path.c:118: undefined reference to `S_ISDIR'的错误
参考链接:https://blog.csdn.net/ubuntucc/article/details/9264165
非常感谢这个链接的博主,通过这个文章我知道我掉坑里去了,知道了正确的安装顺序为:M4 -> autoconf -> automake (很重要!!!!)
你要是按照osdrv/tools/jffs2_tool/readme_cn.txt里面的安装步骤你就会以一个相反的安装顺序安装并会出现我上面所有的问题,一个软件还没安装完问题就出现了,又解决这个问题解决问题中又出现问题到最后一个软件也没安装上。
第三个问题的解决办法:进入文件路径m4-1.4.14/src/下找到path.c点击进入在#include“m4.h”下面一行添加#include"sys/stat.h"
然后再安装一遍m4就不会出问题了。下图为m4安装成功的图
之后就按照这个顺序安装:M4 -> autoconf -> automake 就行了
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
举例autoconf的安装,输入下列指令
wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.gz
sudo tar zxvf autoconf-2.68.tar.gz -C /root %%解压到root文件夹中
注:进入root目录
cd autoconf-2.68
./configure --prefix=/usr/local %%设置安装目录,安装到/usr/local 目录中
make && mkae install %% 安装和编译
注:其他几个的安装过程与这个类似
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55%%%%%%%%%
四、编译mtd-utils2.0.2