mount到linux 编译问题,嵌入式Linux问题总结(一) Ubuntu常用命令和编译问题解决方法...

在进行嵌入式Linux的学习笔记的学习过程中,开发过程也遇到很多Ubuntu系统,编译,Makefile语法,设备树,网络以及线程,进程等细节知识,这部分知识十分零散,却是应用开发的基础,如果将其放在学习笔记系列中,又干扰整个开发的节奏,所以就在上个系列的基础上,新增加关于嵌入式Linux问题的总结,这里面记录的可能是常用命令,编译报错的解决方法,特殊的bash语法知识等,如果后面再遇到问题,解决后,也会持续维护更新这篇文章,算是个小的问题资料库了。

1.常用资料网络路径

2.常用Ubuntu指令汇总

sudo su获取root权限clear清除当前界面ifconfig网络相关执行

ifconfig eth0 up 启动网口0

top     查看当前系统的各程序的占有率mkdir -p filepath 创建路径,可递归创建

apt-get installfilename 安装指定文件

alias ll=‘ls -alF‘列出当前文件夹内状态ls /dev/查询当前的设备ls /dev/sd*查询当前的是的sd卡设备ps -a | grepsshd 查询当前执行的sshd后台应用

ps -ef            查询当前执行的所有后台应用kill -9xxx 关闭指定ID的后台应用tar -xvf xxx 解压到当前文件夹,后面可指定目录cat /proc/devices 查询当前的设备总线scp -r file_name [email protected]_addr:/filepath

例如:scp -r uart_proto root@192.168.1.251:/usr/app

通过ssh快速上传文件到指定地址insmod/rmmod/modprobe/lsmod 加载/删除/带关联加载/显示内核模块

modinfo xx.ko 列出模块的信息tar -vcjf xxx.tar.bz2 * 将当前路径下的文件打包

mknode/dev/... c main_id slave_id

例如: mknod /dev/led c 1 0根据主从设备号创建设备节点ls /proc/slabinfo 查看内存占用情况

3. Linux下挂载SD卡方法

使用指令ls /dev/mmc* 查看当前的sd卡分区,如我的sd卡为/dev/mmblk0p1~4

使用指令

mount -t vfat /dev/mmcblk0p1  /mnt/sdb1 将SD卡挂载到指定路径下,并可以通过指令

umount /mnt/sdb1                     取消u盘的挂载

错误问题解决:

mount: mounting /dev/mmcblk0p1 on /mnt/sdb2 failed: No such file or directory

此时如果mnt路径下没有该目录,会挂载失败

mount -n -o remount,rw /   解锁只读权限,

mkdir /mnt/sdb1              创建挂载路径

此后可通过

ls /mnt/sdb1  查看挂载的U盘的数据

4. 编译和命令行错误问题解决

1) 嵌入式平台断电或者硬件复位保存文件会无效

原因: 这是因为嵌入式文件的保存分为程序读写---->缓冲区----->内核------>磁盘,直接硬件重启可能会导致来不及写入。

解决指令: 使用reboot指令进行复位,尽量不要使用硬件复位。

2)Makefile编译出错

内核编译报如下显示找不到Makefile

make[2]: *** No rule to make target `/usr/kernel/hello/Makefile‘.  Stop.

make[1]: *** [_module_/usr/kernel/hello] Error 2

make[1]: Leaving directory `/usr/src/linux-headers-3.5.0-23-generic‘

解决办法:Makefile必须大写,否则找不到文件

/bin/sh: 1: lzop: not found问题

解决方案是:

安装lzop,执行下面语句

sudo apt-get install lzop

Makefile:5: *** missing separator (did you mean TAB instead of 8 spaces?).  Stop.

解决办法:make命令需要以Tab对齐,直接复制可能是空格对齐,使用vim指令修改带make行的语句,用tab对齐。

curses.h: No such file or directory

解决办法:sudo apt-get install libncurses5-dev

bc:command no found

解决办法:sudo apt-get install bc

3)普通模式和root模式命令状态执行不一致

原因:管理员模式和普通模式对应的PATH不一致,在普通模式下能找到指令,管理员模式下无法找到。

解决办法:

在普通模式下PATH对应路径为/etc/profile中的export PATH="xxx:添加路径",

在管理员模式下PATH对应路径为/etc/environment中的PATH="xxx:添加路径"

修改后可用source /etc/environment来更新PATH,有问题可及时修改。

另外,可通过echo $PATH查看当前的全局路径。

4)内核模块加载错误

insmod: error inserting ‘memdev.ko‘: -1 Device or resource busy

原因:驱动的设备号已经被占用

解决办法:如果占用设备号的设备同样为独立于内核的模块,可用rmmod删除后,在添加,如果为内核集成的模块,则需要重新编译内核模块或Linux模块,避免被占用。

5)使用SSH指令传输数据出错

如scp -r uart_proto [email protected]:/usr/app报如下错误

no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

原因:ssh客户端使用的配置为ssh_config, ssh服务器端使用配置为sshd_config

vim /etc/ssh/ssh_config(路径可能根据实际情况改变,我的系统是该路径)

将ssh服务器下sshd_config中的KexAlgorithms, Ciphers, MACs添加到该文件末尾即可。

6)编译node显示

‘print‘ no acceptable C compiler found

如果gcc, g++在全局下都能正常使用,那么原因是默认系统python的版本使用的是python3,而不是python2,可通过

cd /usr/bin

rm -rf python

ln -s /usr/bin/python2.7 /usr/bin/python

原文:https://www.cnblogs.com/zc110747/p/12983121.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值