错误1
[root@RED26DVEVM USB_camera_Test]# make
arm-linux-gcc -o usb_camera usb_camera.c -ljpeg -lpthread
usb_camera.c: In function 'yuyv2rgb565':
usb_camera.c:337: error: stray '\343' in program
usb_camera.c:337: error: stray '\200' in program
usb_camera.c:337: error: stray '\200' in program
我的原因 是因为按到了半角全角字符,换成英文重新输入这一行就OK。如果是文件编码问题转成UTF-8或者ASIC就可以,这个试下就知道了。
错误2
交叉编译生成的程序,拷到开发板上运行出现错误
[root@EmbedSky /opt]# ls
Qtopia framebuffer kde usb_camera
文件夹下有framebuffer这个程序,权限也设置成777,但是在终端下执行 ./framebuffer
提示
[root@EmbedSky /opt]# ./framebuffer
-/bin/sh: ./framebuffer: not found
但是写了个最简单的hello程序确可以执行
后来发现这个framebuffer是用另外一个交叉编译器编译的,跟开发板上现在运行的程序编译器版本不一致。换成对应的编译器就OK了,
还有一种说法是缺少库文件,
解决方式 参考这里,
http://www.cnblogs.com/nick123/archive/2009/12/01/1614919.html
最近有时间开始学习ARM,平台是TQ2440,下载了2.6.31的内核源码,并开始构建yaffs2文件系统,手册上写的还是很详细,可是我在往里面加Zmodem文件传输协议的命时,却出现了-/bin/sh: rz: not found的错误,自己编译的hello程序也出现同样的错误,不是权限不够,后来把系统自带的根文件系统下的库文件全复制过来,这样就可以执行了。
看来是缺少库文件的原因,可是原来的库文件太多,每次下载很慢,所以就干脆自己添加目前需要的,用arm-linux-readelf命令查看的所需的库,根据输出拷贝了
libc-2.8.so libgcc_s.so.1 libnsl.so.1
libc.so.6 libnsl-2.8.so
以为这样就没问题了,可是还是出现上述错误
后来用arm-linux-readelf -a hello
输出一大堆信息,看见输出中提到了ld-linux.so.3,去库文件的目录下面查看了该文件,是个符号链接,于是把它和它指向的库文件全都复制到根文件系统的/lib目录下面,这样就可以制作的yaffs2文件系统下载到板子上
运行./hello
hello