linux程序编译遇到的小错误

来源:互联网 发布:知乎昆明婚纱照 编辑:程序博客网 时间:2024/05/22 10:56

错误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

因为编译已经指出错误在哪一行,但看代码没有问题,因为文件是从xp下面复制到linux下面,可能是格式或者标号问题,检查这两个原因即可解决。
我的原因 是因为按到了半角全角字符,换成英文重新输入这一行就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



原创粉丝点击