移植useradd到嵌入式Linux设备
??????? (友情提示:前面一大段描述的是在老版本Ubuntu14.4交叉编译新版本shadow,过程曲折,没有结果,分割线后面一段是重新换了一个较老版本shadow-4.4,过程丝滑,结果喜人。诸君如耐心有限可直接划拉至分割线后部分内容。对于其他程序的移植也是同理,合适的才是最好的)
????????一般嵌入式Linux设备上只有默认的一个root用户(其他的比如ftp什么的用户暂时不管)及其一个对应的密码(比如通过SSH或串口登录进去的时候会被要求输入用户名及密码),如果我们根据某种需求需要新增一个用户,可以通过useradd命令进行添加,桌面Linux系统一般自带,但嵌入式设备可能会被裁剪掉,此时就需要通过移植的方式添加这个命令。
??????? GitHub - shadow-maint/shadow: Upstream shadow tree下载shadow工程源码,将压缩包拷贝进Linux系统中(如果用的虚拟机,千万不能放到与windows的共享路径下),解压后如下内容,
我们不再通过前面移植wolfssl时做的那样通过aclocal系列操作生成configure(试过,问题很多,也许是Ubuntu里面的一些环境不一样导致的,没精力细究,不想踩坑的直接略过),而是通过执行
./autogen.sh
生成configure文件,这里面可能会提示gettext版本过低相关的错误信息(我的Ubuntu是14.04,比较久远了,gettext版本为0.18.3),切换过几个源重新安装gettext,都是提示已经最新,我们采用手动编译源码安装的方式升级到0.19.4(Index of /gnu/gettext),解压->./configure->make->make install。重新查看gettext版本(gettext --v),提示已经是0.19.4了。
执行autogen.sh后的文件夹情况如下:
多了m4文件夹,多了aclocal.m4、config.rpath、configure几个文件。
接下来执行命令
./configure
提示如下错误
解决无果后重新依次执行如下命令
aclocal -I /usr/share/aclocal-1.14 -I /usr/share/libtool/m4 --install
autoconf
autoheader
automake --add-missing
因为通过autogen.sh的方式生成了首次通过aclocal运行提示缺少的相应文件,所以此次在执行前三行命令后都很正常,但是在执行automake时,提示如下错误:
configure.ac:34: error: required file './ltmain.sh' not found
解决方式如下:
//查看版本
libtoolize --version
//解决方法
libtoolize --automake --copy --debug -- force
当前路径下生成了ltmain.sh文件,咱接着configure
./configure --prefix=$PWD/../arm-gcc/ --host=arm-linux CC=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-gcc AR=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-ar STRIP=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-strip
提示(。。。。。)
未完,待续........
---------------------------------------------------------------------------------------------------------------------------------
A few weeks later...
??????? 本来前人已经在嵌入式系统里面移植了adduser命令,同样也能实现添加用户的任务,前段时间打算就不再移植useradd了,但又有一个问题出现,如何通过程序实现添加用户后再添加密码,adduser及passwd都可以达到目的,只是需要等待系统的输入密码提示后才能手动输入,而不能通过程序直接指定(或许也有办法,暂时不清楚),只能再次继续前次未竟之事了。
??????? 在各版本shadow下载网站上找到一款2016年提交的shadow-4.4.tar.xz,解压到虚拟机非共享路径下,
里面已有现成的configure文件,
命令窗口进入到该路径,执行如下命令,进行配置(安装路径、编译工具链),生成Makefile文件,
./configure --prefix=$PWD/../arm-gcc/ --host=arm-linux CC=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-gcc AR=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-ar STRIP=/root/DCJ_hf/buildroot/output/host/usr/bin/arm-linux-gnueabihf-strip
分别执行make和make install后,在指定的安装目录下生成了目标文件,
拷贝到嵌入式设备中,查看帮助,显示如下,
至此结束。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!