组建自己的Linux-02命令移植

1.找到命令的源文件路径

[[email protected] ~]# which ls
alias ls=‘ls --color=auto‘
	/bin/ls
[[email protected] ~]# which cat
/bin/cat
#有的命令使用了别名,所以有alias相关信息,要把alias相关的去除
[[email protected] ~]# 
[[email protected] ~]# which ls | grep -v "alias"
#使用grep -v 去除alias
	/bin/ls
[[email protected] ~]# which ls | grep -v "alias" | awk ‘{print $1}‘
#使用这个命令就能输出源文件路径
/bin/ls

2.找到命令依赖的文件

[[email protected] ~]# ldd /bin/ls
#查看/bin/ls执行的时候依赖库,可以看到这儿有用的就是包含/lib64的
[[email protected] ~]# ldd /bin/ls | grep -o "/lib64.*"
#grep -o只显示匹配的
[[email protected] ~]# ldd /bin/ls | grep -o "/lib64.*" | awk ‘{print $1}‘
#使用此命令就能输出命令依赖的库文件
#/bin/ls取自which ls | grep -v "alias" | awk ‘{print $1}‘

3.移植命令脚本

现在知道要移植一个命令,需要移植命令源文件和所依赖的库。bincp移植命令源文件,libcp对应移植依赖库文件,创建下面的脚本并执行。

dirname功能是取文件的路径名称。

移植完成后使用chroot测试。

[[email protected] tmp]# vi /tmp/cp1.sh 
#!/bin/bash
#
DEST=/mnt/sysroot
#设置移植的目的地
libcp() {
  LIBPATH=`dirname ${1}`
  [ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH
  [ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished."
}
bincp() {
  CMDPATH=`dirname ${1}`
  [ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH
  [ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH
  for LIB in  `ldd $1 | grep -o "/lib64.*" | awk ‘{print $1}‘`; do
    libcp $LIB
  done
}
read -p "Your command: " CMD
until [ $CMD == ‘q‘ ]; do
   ! which $CMD && echo "Wrong command" && read -p "Input again:" CMD && continue
  COMMAND=`which $CMD | grep -v "alias" | awk ‘{print $1}‘`
  bincp $COMMAND
  echo "copy $COMMAND finished."
  read -p "Continue: " CMD
done

时间: 2024-10-14 17:18:51

组建自己的Linux-02命令移植的相关文章

嵌入式linux开发uboot移植(五)——uboot命令体系

嵌入式linux开发uboot移植(五)--uboot命令体系 本文将根据SMDKV210开发板的三星官方uboot源码分析uboot的命令体系.内容 包括uboot的命令体系的实现机制,uboot命令是如何执行的,以及如何在uboot中添加一个自定义的命令. 一.uboot命令体系简介 uboot命令体系代码放在uboot/common中,包括cmd_xxx.c.command.c .main.c源码文件.uboot实现命令体系的方法是每一个uboot命令对应一个函数,与shell的实现是一致

Linux上命令的使用格式和基础命令详解

一.Linux上命令的使用格式 命令行提示符详解: 用户通过终端的命令行接口来控制操作系统,登陆后如下: [[email protected] ~]# root: 当前登录的用户 @:分隔符 localhost: 当前主机的主机名,非完整格式:此处的完整格式为:localhost.localdomain [[email protected] ~]# hostname localhost.localdomain ~:用户当前所在的目录(current directory),也称为工作目录(work

嵌入式 Linux根文件系统移植(一)——Linux文件系统简介

嵌入式 Linux根文件系统移植(一)--Linux文件系统简介 本文对文件系统分析的代码来源于linux 2.6.35.7版本. 一.文件系统的体系结构 文件系统是对存储设备上的数据和元数据进行组织的机制,便于用户和操作系统的交互.Linux支持多种文件系统,文件系统接口实现为分层的体系结构,将用户接口层.文件系统实现和操作存储设备的驱动程序分隔开.Linux文件系统的体系结构如下: 用户空间包含一些应用程序(例如,文件系统的使用者)和 GNU C库(glibc),为文件系统调用(打开.读取.

linux wget 命令用法详解(附实例说明)

Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器.如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器.这样既浪费时间又浪费精力,那不没办法的事.而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步.wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来

Linux基础命令(5)

二十四 date 命令简介在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便.1.命令格式:  date [参数]... [+格式]2.命令功能:date 可以用来显示或设定系统的日期与时间.3.命令参数:3.1必要参数:%H 小时(以00-23来表示). %I 小时(以01-12来表示). %K 小时(以0-23来表示). %l 小时(以0-12来表示). %M 分钟(以00-59

16C554在LINUX上的移植(AT91)

16C554在LINUX上的移植(AT91) linux版本:2.6.30 AT91SAM9263 修改串口扩展驱动: 1,在/drivers/serial/下以8250_exar_st16c554.c文件为模板创建8250_at91_xr16v554.c文件:修改相应的PORT和中断号,修改Platform device ID为 PLAT8250_DEV_AT91_XR16V554:在init函数中加入了对总线,及中断口的初始化操作::在文件/include/linux/serial_8250

安装编译busybox 替换Linux的命令  

从busybox下载最新的源码包    wget http://busybox.net/downloads/busybox-1.23.1.tar.bz2 解压  进入到busybox目录 执行 make defconfig    ; make  ; make install  安装编译完成 会在当前的目录下生成一个 _install   目录  .里面会生成一些系统的常用命令. 但是有个缺点就是  所有的命令都是从busybox里链接过来的 .  不方便移植到系统的路劲下 回到刚解压完的目录里去

linux sar 命令详解

linux sar命令详解 sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情况.磁盘I/O.CPU效率.内存使用状况.进程活动及IPC有关的活动等. sar命令的格式: -bash-4.1# sar --help Usage: sar [ options ] [ <interval> [ <count> ] ] Options ar

向嵌入式linux开发板移植openSSH

向嵌入式linux开发板移植openSSH 晚上没事干,想着能不能把高大上的openSSH移植到我现在开发的嵌入式linux开发板上,前不久刚弄出来dropbear,但遇到一些小问题,一会说,所以把openSSH搞上去还是可以的.开发板端为服务器端,由宿主机客户端访问. 2016-8-16 背景 开发板:freescale i.mx6q 宿主机操作系统:ubuntu 14.04 开发板操作系统:linux 3.0.35 基本情况 使用dropbear后,ssh算是在板子上成功跑起来了,参见我另一

Linux进阶命令

0x00 Linux进阶命令 当我们熟悉一定的基础命令时,我们往往会接触到一些高级的命令操作,或者说是陌生的命令操作. 0x01 程序构建 一般源代码提供的程序安装需要通过配置.编译.安装三个步骤: 配置: ①要安装软件的依赖关系 ②设置程序安装所需要的初始化信息,比如安装路径,需要安装哪些组件 ③配置完成,会生成makefile文件供第二步make使用 编译:是对源文件进行编译链接生成可执行程序: 安装:做的工作就简单多了,就是将生成的可执行文件拷贝到配置时设置的初始路径下: 1.1. 配置