免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 659 | 回复: 0
打印 上一主题 下一主题

JPEG的交叉编译 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-18 11:28 |只看该作者 |倒序浏览
JPEG的交叉编译[参考别人的做了]
[假设你的交叉编译工具安装在/usr/arm目录下的]
step1:下载并解压jpeg源代码包
step2:
#cd
./jpeg-6b
#./configure --prefix=/usr/arm/arm-linux
--exec-prefix=/usr/arm/arm-linux \
               --enable-shared
--enable-static
下面分别介绍这几个参数的作用:
--prefix=/usr/arm/arm-linux :
执行make install 后,会将与体系无关的文件拷贝到此目录下,具体如下:
/usr/arm/arm-linux
.....................................
        |
      
+---include........................................
             |
        
     ---jconfig.h
             |
             ---jerror.h
            
|
             ---jmorecfg.h
             |
            
---jpeglib.h
       +---man............................................
  
           |
            +---man1.......................................
  
                |
                  ---cjeg.1
                  |
     
             ---djpeg.1
                  |
                 
---jpegtran.1
                  |
                  ---rdjpgcom.1
     
             |
                  ---wrjpgcom.1
              

--exec-prefix=/usr/arm/arm-linux : 执行make install
后,会将与体系无关的文件拷贝到此目录下,即将一些可执行程序、动态链接库和静态链接库拷贝到此目录的相应目录下,具体如下:
/usr/arm/arm-linux
........................................
        |
      
+---bin............................................
             |
        
     ---cjeg
             |
             ---djpeg
             |
  
           ---jpegtran
             |
             ---rdjpgcom
        
     |
             ---wrjpgcom
      
+---lib...........................................
             |
        
     ---libjpeg.la
             |
             ---libjpeg.so
        
     |
             ---libjpeg.so.62
             |
            
---libjpeg.so.62.0.0
           
--enable-shared : 用GNU
libtool编译成动态链接库
。下面分别对应有无此参数所生成的Makefile的比较:
      
--------------------------------------------------------------------------------------
  
            无--enable-shared参数             |              
有--enable-shared参数
      
--------------------------------------------------------------------------------------
                    LIBTOOL =                   |            LIBTOOL =
./libtool
      
--------------------------------------------------------------------------------------
  
                 O = o  A = a                 |            O = lo    A = la
  
     
-------------------------------------------------------------------------------------
  
                 LN= $(CC)                    |      LN= $(LIBTOOL) --mode=link
$(CC)
      
--------------------------------------------------------------------------------------
  
   INSTALL_PROGRAM= ${INSTALL}     |  INSTALL_PROGRAM= $(LIBTOOL) --mode=install
${INSTALL}
        INSTALL_LIB= ${INSTALL} -m 644  |  INSTALL_LIB= $(LIBTOOL)
--mode=install ${INSTALL}
     
---------------------------------------------------------------------------------------
  
         无参数:
              # .c.lo:
              #  $(LIBTOOL)
--mode=compile $(CC) $(CFLAGS) -c $(srcdir)/$*.c
           有参数:
        
      .c.lo:
              $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c
$(srcdir)/$*.c
  
------------------------------------------------------------------------------------------
  
        无参数:
             install: cjpeg djpeg jpegtran rdjpgcom
wrjpgcom
          有参数:
             install: cjpeg djpeg jpegtran
rdjpgcom wrjpgcom install-lib
   
-----------------------------------------------------------------------------------------
step3:修改生成的Makefile文件:
       # The name of your C
compiler:
       CC= gcc  该成  CC=/usr/arm/bin/arm-linux-gcc
(根据你自己交叉编译器的位置修改)
       # library (.a) file creation command
       AR=
ar rc 该成  AR= /usr/arm/bin/arm-linux-ar rc  (同上)
       # second step in .a
creation (use "touch" if not needed)
       AR2= ranlib 该成  AR2=
/usr/arm/bin/arm-linux-ranlib (同上)
step4:#make
     
#make install
      这样JPEG库就交叉编译成功了,相应的库和头文件都在/usr/arm/arm-linux/include
和/usr/arm/arm-linux/lib目录下了
安装好以后就在这2个目录下增加了如下文件:
/usr/arm/arm-linux/include
jerror.h
jmorecfg.h
jconfig.h
jpeglib.h
/usr/arm/arm-linux/lib
libjpeg.a
libjpeg.la
libjpeg.so
libjpeg.so.62
libjpeg.so.62.0.0
编译程序的时候记得加上
-ljpeg
不然大概就有下面这些
/tmp/cc4aJtAS.o: In function
`write_JPEG_file':
/tmp/cc4aJtAS.o(.text+0x20): undefined reference to
`jpeg_std_error'
/tmp/cc4aJtAS.o(.text+0x3c): undefined reference to
`jpeg_CreateCompress'
/tmp/cc4aJtAS.o(.text+0x88): undefined reference to
`jpeg_stdio_dest'
/tmp/cc4aJtAS.o(.text+0xbc): undefined reference to
`jpeg_set_defaults'
/tmp/cc4aJtAS.o(.text+0xd0): undefined reference to
`jpeg_set_quality'
/tmp/cc4aJtAS.o(.text+0xe0): undefined reference to
`jpeg_start_compress'
/tmp/cc4aJtAS.o(.text+0x140): undefined reference to
`jpeg_write_scanlines'
/tmp/cc4aJtAS.o(.text+0x168): undefined reference to
`jpeg_finish_compress'
/tmp/cc4aJtAS.o(.text+0x17c): undefined reference to
`jpeg_destroy_compress'
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69947/showart_1327823.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP