LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1414|回复: 9

编译中Jpeg库的问题

[复制链接]
发表于 2006-8-1 17:49:23 | 显示全部楼层 |阅读模式
[root@hch vidcapture-bak]# make
/usr/local/arm/3.3.2/arm-linux/bin/gcc -DHAVE_LIBJPEG -I/usr/include   -c -o vid
eo-capture.o video-capture.c
/usr/local/arm/3.3.2/arm-linux/bin/gcc -DHAVE_LIBJPEG -I/usr/include   -c -o vid
eo_device.o video_device.c
/usr/local/arm/3.3.2/arm-linux/bin/gcc -DHAVE_LIBJPEG -I/usr/include   -c -o com
municate.o communicate.c
communicate.c: In function `sendData':
communicate.c:174: warning: passing arg 5 of `sendto' from incompatible pointer
type
/usr/local/arm/3.3.2/arm-linux/bin/gcc -Xlinker  -rpath-link /usr/local/arm/3.3.
2/arm-linux/lib -L. -ljpeg video-capture.o video_device.o communicate.o -o vidca
t
video-capture.o(.text+0x328): In function `put_image_jpeg':
: undefined reference to `jpeg_std_error'
video-capture.o(.text+0x340): In function `put_image_jpeg':
: undefined reference to `jpeg_CreateCompress'
video-capture.o(.text+0x36c): In function `put_image_jpeg':
: undefined reference to `jpeg_set_defaults'
video-capture.o(.text+0x380): In function `put_image_jpeg':
: undefined reference to `jpeg_set_quality'
video-capture.o(.text+0x398): In function `put_image_jpeg':
: undefined reference to `jpeg_stdio_dest'
video-capture.o(.text+0x3a8): In function `put_image_jpeg':
: undefined reference to `jpeg_start_compress'
video-capture.o(.text+0x4a4): In function `put_image_jpeg':
: undefined reference to `jpeg_write_scanlines'
video-capture.o(.text+0x4d0): In function `put_image_jpeg':
: undefined reference to `jpeg_finish_compress'
video-capture.o(.text+0x4dc): In function `put_image_jpeg':
: undefined reference to `jpeg_destroy_compress'
collect2: ld returned 1 exit status
make: *** [video-capture] Error 1
请问这到底是什么原因?
网上好像也有人遇到过类似问题
但是我没有发现解决方案
很急啊,我都被阻半个月了
 楼主| 发表于 2006-8-2 09:47:10 | 显示全部楼层
高手指点哈啊
我的那个是一个抓图和图象传输的程序
回复 支持 反对

使用道具 举报

发表于 2006-8-2 16:36:03 | 显示全部楼层
is libjpeg cross-comiped and installed to your arm-linux-gcc's lib directory?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-11 10:36:53 | 显示全部楼层
yes
  But the problem exists still
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-11 10:37:39 | 显示全部楼层
What can I do ?
回复 支持 反对

使用道具 举报

发表于 2006-8-11 20:05:59 | 显示全部楼层
说得具体一点, 比如 libjpeg 具体安装在哪里, 另外用 file 查一下 libjpeg.so.*
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-14 17:44:50 | 显示全部楼层
我本把libjpeg解压在/home/hch/jpeg-6b中
然后安装就自动装到/usr/lib中了
但是我把libjpeg.*   cp到/usr/local/arm/3.3.2/arm-linux/lib 下了
file  /usr/local/arm/3.3.2/arm-linux/lib/libjpeg.so.62后
结果是以下附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2006-8-14 19:02:47 | 显示全部楼层
你现在的这个libjpeg是for pc的。为了获得arm版本的,你应该下载它的源代码,并且手工编译它,然后安装到这个目录。如果你不能理解我说的意思,看看我下面的这两行
  1. rf@RemoteFish:~$ file /usr/lib/libjpeg.so.62.0.0 /usr/local/arm-linux/arm-linux/lib/libjpeg.so.62.0.0
  2. /usr/lib/libjpeg.so.62.0.0:                           ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped
  3. /usr/local/arm-linux/arm-linux/lib/libjpeg.so.62.0.0: ELF 32-bit LSB shared object, ARM, version 1 (ARM), stripped
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-15 09:02:48 | 显示全部楼层
我下的是jpegsrc.v6b.tar.gz
这个压缩包解压后如果用手工编译是不是太麻烦了?里面有百把个文件啊
还有我把其中Makefile改了,编译器是用的ARM的编译器啊
为什么生成的库还是for X86的?
DODO能不能告诉我到底该怎么手工编译?
谢谢
回复 支持 反对

使用道具 举报

发表于 2006-8-15 17:03:36 | 显示全部楼层
我用的系统是 debian, 我是这样获得源代码的
  1. $ sudo apt-get source libjpeg62
复制代码
进入源代码根目录, 我写了一个小脚本 build-arm-linux.sh, 如下
  1. #!/bin/sh
  2. CC="/usr/local/arm-linux/bin/arm-linux-gcc -s" \
  3. AR="/usr/local/arm-linux/bin/arm-linux-ar rc" \
  4. RANLIB=/usr/local/arm-linux/bin/arm-linux-ranlib \
  5. ./configure \
  6. --prefix=/usr/local/arm-linux/arm-linux \
  7. --enable-shared \
复制代码
其中 --prefix 指定了安装路径. 如果楼主怕出问题, 也可以指定到一个临时目录, 比如 /tmp, 待一切成功后再挑有用的东西拷到对应的目录下

然后就是通常的步骤了
  1. ./build-arm-linux.sh && make && make install
复制代码
如果楼主指定了临时目录, 那么别忘了在它 install 出错时按照提示建立相应的目录, 比如 /tmp/include

然后用 file 查看一下
  1. libjpeg.so.62.0.0: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped
复制代码
再用 strip 命令处理一下
  1. /usr/local/arm-linux/bin/arm-linux-strip /path/to/libjpeg.so.62.0.0
复制代码

这样就可以了

另外要注意的是, 这仅仅是让编译环境支持了 libjpeg, 然后别忘了把它下载到开发板里(如果是静态连接就不用了)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表