记录ubuntu交叉环境、busybox安装中的一些问题

一、Ubuntu无法上网,没有ens33,并且打开NetworkManager.conf文件也是空的

ifconfig
//看输出中有没有ens33,我的是没有的
解决办法
1)停止网络服务
停止之前先看看有没有network-manager这个服务:
systemctl list-unit-files | grep network
在输入停止命令 :
service network-manager stop
2)删除设备网卡状态管理文件
sudo rm -rf /var/lib/NetworkManager/NetworkManager.state
3)重启网络服务,网络状态会刷新并写入文件
service network-manager start

二、安装busybox的流程

https://blog.csdn.net/weixin_42525672/article/details/116870602?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168930246016800227439055%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168930246016800227439055&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-116870602-null-null.142v88insert_down1,239v2insert_chatgpt&utm_term=ubuntu%E4%B8%8A%E5%88%B6%E4%BD%9Czynq%E7%9A%84busybox%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F&spm=1018.2226.3001.4187 上面地址是大佬的链接
1、通过Git下载BusyBox
git clone git://git.busybox.net/busybox
2. 编译安装BusyBox
在busybox目录下
make defconfig
make menuconfig 此时会报错,
HOSTCC scripts/kconfig/lxdialog/checklist.o
In file included from scripts/kconfig/lxdialog/checklist.c:24:0:
scripts/kconfig/lxdialog/dialog.h:31:20: fatal error: curses.h: 没有那个文件或目录
compilation terminated.
scripts/Makefile.host:120: recipe for target ‘scripts/kconfig/lxdialog/checklist.o’ failed
make[2]: *** [scripts/kconfig/lxdialog/checklist.o] Error 1
/home/daniu/busybox/busybox/scripts/kconfig/Makefile:14: recipe for target ‘menuconfig’ failed
make[1]: *** [menuconfig] Error 2
Makefile:443: recipe for target ‘menuconfig’ failed
make: *** [menuconfig] Error 2
这个是没有安装这时因为ubuntu系统中缺少一个套件 ncurses devel ,把此套件libncurses5-dev安装下即可.
https://blog.csdn.net/buck_wan/article/details/103351510?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168930246016800227439055%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168930246016800227439055&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-2-103351510-null-null.142v88insert_down1,239v2insert_chatgpt&utm_term=ubuntu%E4%B8%8A%E5%88%B6%E4%BD%9Czynq%E7%9A%84busybox%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F&spm=1018.2226.3001.4187 上面地址是大佬的链接
安装sudo apt-get install libncurses5-dev
然后就可以make menuconfig打开busybox的配置界面了。。。
1、设置busybox的安装目录Busybox Setting -------->
    Installation Options (“make install” behavior) —>
      (./_install) BusyBox installation prefix
完成配置后,输入以下脚本安装BusyBox:
make install

  1. 配置交叉编译工具 打开busybox的顶层目录
    (1) Vi Makefile
    (2) 修改内容: (不修改内容编译时就要指定这两个变量的值,如 make ARCH=arm CROSS_COMPILE=arm-linux-)
    164行 CROSS_COMPILE ?= 改为:CROSS_COMPILE ?= arm-linux-
    190行 ARCH ?= $(SUBARCH) 改为:ARCH ?= arm
    表示修改交叉工具链为arm-linux- 架构支持arm架构
  2. 默认配置:导出配置文件【 make defconfig 】
    或者指定输出目录 make defconfig O=…/output 指定的输出目录output需要自己事先创建
  3. 自定义选项配置 图形化配置界面 启动命令:【 make menuconfig 】
    (1)添加 insmod rmmod modinfo等命令,在配置界面中找到“Linux Module Utilities”然后选中相应的命令
    (2) 配置工具生成到指定的目录
      Busybox Setting -------->
        Installation Options (“make install” behavior) —>
          (./_install) BusyBox installation prefix
  4. 编译
       $ make 或者 make all -j4 V=1     PC机下linux中多核编译
       $ make install
  5. 清除编译过程的文件及配置
      【make clean 】      清除 .o .bin 文件
      【make mrproper】    清除 .o .bin 配置文件
      【make distclean】     清除 .o .bin 配置文件
    第二步 构建基础文件和目录 – 根文件系统制作
  6. 在根文件系统目录下创建根文件系统所需要的目录: _install $ mkdir dev etc home lib mnt proc root sys tmp var -p
  7. 在创建的根文件系统的 etc目录下创建inittab文件:_install $ touch etc/inittab
    #this is run first except when booting in single-user mode.
    ::sysinit:/etc/init.d/rcS
    #/bin/sh invocations on selected ttys
    ::respawn:-/bin/sh
    #Start an “askfirst” shell on the console (whatever that may be)
    ::askfirst:-/bin/sh
    #Stuff to do when restarting the init process
    ::restart:/sbin/init
    #Stuff to do before rebooting
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/sbin/swapoff -a
  8. 继续创建目录及文件如下:
      (1) _install $ mkdir etc/init.d/ -p
      (2) _install $ touch etc/init.d/rcS
      (3) _install $ gedit etc/init.d/rcS 在此文件内添加内容如下
    #!/bin/sh
    #This is the first script called by init process
    /bin/mount -a
    echo /sbin/mdev>/proc/sys/kernel/hotplug
    mdev -s
  9. _install $ touch etc/fstab
        _install $ gedit etc/fstab 文件中添加内容如下:
    #device mount-point type options dump fsck order
    proc /proc proc defaults 0 0
    tmpfs /tmp tmpfs    defaults 0 0
    sysfs /sys sysfs defaults 0 0
    tmpfs /dev tmpfs defaults 0 0
  10. _install $ touch etc/profile
        _install $ gedit etc/profile 文件中添加内容如下:
    #!/bin/sh
    export HOSTNAME=farsight
    export USER=root
    export HOME=root
    export PS1=“[ U S E R @ USER@ USER@HOSTNAME \W]# "
    #export PS1=”[[\033[01;32m]KaTeX parse error: Undefined control sequence: \[ at position 6: USER@\̲[̲\033[00m\]\[\03…HOSTNAME[\033[00m\ \W]$ "
    PATH=/bin:/sbin:/usr/bin:/usr/sbin
    LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
    export PATH LD_LIBRARY_PATH
  11. 添加动态库支持 // 查看命令在哪个目录下面 which arm-none-linux-gnueabi-gcc  
      (1) 查看命令依赖的库文件 :arm-none-linux-gnueabi-readelf -d /bin/ls
      (2) _install $ sudo cp ~/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/libc/usr/lib/* ./ -ra 表示把相应目录下的所有文件拷贝到制作的根文件系统的 lib目录下
    (3) 为了减少体积删除静态库 _install/lib $ rm lib/*.a
      (4) 剥离动态库的调试信息,符号表等等 du -h 查看文件大小;瘦身_install/lib $ arm-linux-strip * 注意操作的目录;如果没有权限把所有的文件权限修改 chmod 777 *

但是这个根文件系统制作出来后,不可以使用,需要再弄一下启动文件,就可以使用了。但是在这个文件系统中不能运行我的应用程序,开始怀疑是不是编译内核的交叉编译器和编译文件系统的不一致导致的,又将编译应用程序改为静态编译,应用程序就可以使用了,但是静态编译文件太大了,调试的时候可以这样干,真正上板还是得动态编译,
遂又转向了原子哥的方法,制作后可以运行应用程序。这也说明不同的交叉编译器编译的内核和根文件系统没有冲突的关系。(也许我的交叉编译器就是一样的呢,具体的没去试验)

Vim中显示行号

1、临时显示行号
只须按ESC键退出编辑内容模式,输入“:” ,再输入“set number”或者“set nu”后按回车键,就可以显示行号了。行号显示只是暂时的。退出vim后再次打开vim就不显示行号了。
🐖 取消显示行号:输入“:set nonu”

2、永久显示行号
需要修改vim配置文件vimrc。
在默认情况下,用户宿主目录(~)中是没有此文件的,需要在当前用户的宿主目录中手工建立,即使用下面的命令:
vim ~/.vimrc ,在打开的vimrc文件中最后一行输入:set number 或者 set nu,然后保存退出。再次用vim打开文件时,就会显示行号了。

/busybox/busybox/scripts/gcc-version.sh: 行 11: arm-xilinx-linux-gnueabi-gcc: 未找到命令

原因:
交叉编译器的绝对路径与相对路径问题

解决办法:
在busybox的顶层Makefile 176行 CROSS COMPILE ?= 中添加/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-的绝对路径就成功了。(为什么以前用arm-linux-就可以自己找到?)
设置CROSS COMPILE ?=
/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/ arm-xilinx-linux-gnueabi-
即可解决

20230717
在uboot的bootargs配置正确的前提下,如果依然不能挂在根文件系统,就查看一下nfs的服务配置是否正确:
查看nfs服务配置是否正确,检查/etc/exports
运行#sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务
202307017
如果应用程序的编译和内核的编译是使用的不同交叉编译器版本,则应用程序有可能不能使用。如果想不改内核,则需要将应用程序编译为静态的。
$(CC) -o $@ $^ -lrt $(CFLAGS) $(LDFLAGS) -lpthread -static

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值