绝对菜鸟在ubuntu下编译了arm的c程序
1、
直接gcc -o hciwr hciwr.c
执行程序报如下错误:
/system # ./hciwr
./hciwr: line 1: syntax error: unexpected "("
编译器的问题,可能gcc应该是x86的
2、所以用arm的gcc编译:
arm-linux-gcc-4.5.1 -o hciwr hciwr.c
3、执行2步得到的hciwr执行程序
# cp hciwr bin/
/system # hciwr
sh: hciwr: not found
应该是缺少库文件,在ubuntu下执行:
arm-linux-readelf -a h...
阅读全文
一. 常用编译命令选项
假设源程序文件名为test.c。
1. 无选项编译链接
用法:#gcc test.c
作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。
2. 选项 -o
用法:#gcc test.c -o test
作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。
3. 选项 -E
用法:#gcc -E test.c -o test.i
作用:将te...
阅读全文
# define __user __attribute__((noderef, address_space(1)))
__user这个特性,即__attribute__((noderef, address_space(1))),是用来修饰一个变量的,这个变量必须是非解除参考(no dereference)的,即这个变量地址必须是有效的,而且变量所在的地址空间必须是1,即用户程序空间的。
这里把程序空间分成了3个部分,0表示normal space,即普通地址空间,对内核代码来说,当然就是内核空间地址了。1表示用户地址空间,这个...
阅读全文
当进程以阻塞的方式通信,在得到结果前进程会挂起休眠。
为了将进程以一种安全的方式进入休眠,我们需要牢记两条规则:
一、永远不要在原子上下文中进入休眠。
二、进程休眠后,对环境一无所知。唤醒后,必须再次检查以确保我们等待的条件真正为真
简单休眠
完成唤醒任务的代码还必须能够找到我们的进程,这样才能唤醒休眠的进程。需要维护一个称为等待队列的数据结构。等待队列就是一个进程链表,其中包含了等待某个特定事件...
阅读全文
当你在用户空间需要读写一大片数据的时候,这个就用上了。
以下来自:http://www.yuanma.org/data/2006/1207/article_1916.htm
假设我们在 kernel 里产生一个 buffer,user 可以经由 read,write 等 system call 来读取或写资料到这个 buffer 里。如果有一个 user 写资料到 buffer 时,此时 buffer 已经满了。那请问你要如何去处理这种情形呢 ? 第一种,传给 user 一个错误讯息,说 buffer 已经满了,不能再写入。第二种,...
阅读全文
1.在主机的vm1网下设置ip、掩码和网关。
eg:192.168.2.23 255.255.255.0 192.168.2.1
2.虚拟机中设置连接方式为host-only
3.netconfig配置ip与vm1为同一网段,网管为vm1的ip。
eg:192.168.2.24 255.255.255.0 192.168.2.23
4.service vsftpd start
5.关闭防火墙service iptables stop
6.ifup eth0
阅读全文
1. 首先使用切换到root用户;
2. 使用fdisk -l命令查看磁盘信息,找到u盘(可以根据显示的大小确定)
3. 在/mnt下创建挂载点,例如创建usb文件夹:mkdir /mnt/usb
4. 使用mount挂载u盘,例如执行:mount /dev/sdb /mnt/usb
5. 有时候加载出来的u盘显示的文件名称是乱码,遇到这种情况挂载u盘时需要制定编码,例如通过如下命令进行挂载:mount -o iocharset=utf8 /dev/sdb /mnt/usb
6. 挂载完成好,可以cd /mnt/usb访问u盘的内...
阅读全文