zoukankan      html  css  js  c++  java
  • 【Linux开发】为qt-embedded添加jpeg库的交叉编译方法for arm

    看了一个文章:
    =====================================
    谢论坛内各位的帮助,我的qt/e2.3.10和qtopia2.1.1终于全部编译通过.
    下面是jpeg和uuid库的编译方法.是我自己总结的,希望对大家有点儿用.

    为qt-embedded添加jpeg库的交叉编译方法for arm
    下载jpegsrc.v6b.tar.gz
    解压
    tar -xzf jpegsrc.v6b.tar.gz
    cd jpeg-6b
    [root@SJTU-LIUJIAN jpeg-6b]# ./configure --enable-shared
    [root@SJTU-LIUJIAN jpeg-6b]# make
    修改生成的Makefile文件:
    prefix = qt-embeddedd的文件夹路径(eg: /home/qt-2.3.10)
     
    CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc
    AR= /usr/local/arm/2.95.3/bin/arm-linux-ar rc
    AR2= /usr/local/arm/2.95.3/bin/arm-linux-ranlib

    保存
    在你的qt-embedded中建立man/man1文件家,否则安装jpeg库时会出错
    [root@SJTU-LIUJIAN jpeg-6b]#mkdir -p qt-2.3.10/man/man1

    最后:
    [root@SJTU-LIUJIAN jpeg-6b]# make install
    就可以给qt-embedded添加好for arm的libjpeg库.

    把生成的库文件向下面的目录中也拷贝一份:
    /usr/local/arm/2.95.3/arm-linux/lib

    通过命令file libjpeg.so查看:
    libjpeg.so: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped
    这样的话就说明生成的库是for arm的,类似方法可以勇于生成libuuid.so库. 

    =========================================================

    出错::
    然后看一文章:http://q.163.com/10301/blog/hujw0710/8797282200791854540158/#8797282200791854540158
    ===

    1. 首先要 在你安装的目录下建立4个文件目录 :/bin    /include  /lib /man/man1.如果你 没有建立这4个文件目录的话.在make install的时候你会遇到下面的 问题:
    /usr/bin/install -c -m 644 ./cjpeg.1 /home/zz/jpeg-6b/jpeg/man/man1/cjpeg.1
    /usr/bin/install: 无法创建一般文件‘/home/zz/jpeg-6b/jpeg/man/man1/cjpeg.1’: 没有那个文件或目录
    make: *** [install] Error 1
    2. 关于配置安装的 几点意见:
    #  export CC=arm-linux-gcc 
    # ./configure --host=arm-unknown-linux --prefix=/home/zz/jpeg-6b/jpeg   --enable-shared  --enable-static
     分别对动态链接库和静态链接库的支持 

    =====
    建了四个文件夹在prefix下。4个文件目录 :/bin    /include  /lib /man/man1
    在configure后修改Makefile还是出错

    You must prepare a system-dependent jconfig.h file

    ====================这个文件与系统有关,可能!
    copy        /usr/include 文件到/include   还是报错,我就把这个文件copy到与Makefile同级目录中。再make没这个错了,又出了新错误:
    ========================================
    [root@localhost jpeg-6b]# make
    ./libtool --mode=compile arm-linux-gcc -O2  -I. -c ./jcapimin.c
    make: ./libtool: Command not found
    make: *** [jcapimin.lo] Error 127
    ========================================

    检查环境变量,看了一下,PATH里没有arm-linux-gcc所在的bin,加入看一下结果。还是报错如上。
    搜索一下,看这个libtool是个什么东西。
    =================================

    官方下载地址

    Libtool (1.5): 
    ftp://ftp.gnu.org/gnu/libtool/

    6.21.1. 安装 Libtool

    为编译 Libtool 做准备:

    <kbd>./configure --prefix=/usr</kbd>

    编译软件包:

    <kbd>make</kbd>

    要测试结果,请运行:make check 

    安装软件包:

    <kbd>make install
    
    </kbd>

    Libtool的内容

    GNU libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中。

    安装下列程序 : libtool 和 libtoolize

    安装下列库文件 : libltdl.[a,so].

    简短说明

    libtool 提供通用的库编译支持。

    libtoolize 提供了一种标准方式来将libtool支持加入到一个软件包。

    libltdl 隐藏 dlopening 库的复杂细节。

    Libtool 安装依赖关系

    Libtool 依赖于: Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed.

    ===================================

    不会再安这个东西吧!天啊


    http://ftp.gnu.org/gnu/libtool/ 下载,

    安装,在安装目录下
    ===
    [root@localhost libtool-1.5.12]# ./libtool

    *** Warning: inferring the mode of operation is deprecated.
    *** Future versions of Libtool will require --mode=MODE be specified.
    libtool: warning: cannot infer operation mode without MODE-ARGS
    libtool: you must specify a MODE
    Try `libtool --help' for more information.
    看来还能用,但是
    在jpeg-6b下又不找到命令,可能是环境变量的问题:
    把这个目录放入PATH中看一下export PATH=$PWD:$PATH
    还是错误
    =====
    [root@localhost jpeg-6b]# make
    ./libtool --mode=compile arm-linux-gcc -O2  -I. -c ./jcapimin.c
    make: ./libtool: Command not found
    make: *** [jcapimin.lo] Error 127
    [root@localhost jpeg-6b]# ./libtool

    -bash: ./libtool: 没有这个文件或目录。只能在复制来了,看一下。

    ==================================jpeg目录==
    [root@localhost jpeg-6b]# cp ../libtool-1.5.12/libtool .

    [root@localhost jpeg-6b]# ./libtool
    *** Warning: inferring the mode of operation is deprecated. 
    *** Future versions of Libtool will require --mode=MODE be specified.
    libtool: warning: cannot infer operation mode without MODE-ARGS
    libtool: you must specify a MODE
    Try `libtool --help' for more information.

    =======================
    再make看一下。

    [root@localhost jpeg-6b]# make
    ./libtool --mode=compile arm-linux-gcc -O2  -I. -c ./jcapimin.c
    libtool: compile: unable to infer tagged configuration
    libtool: compile: specify a tag with `--tag'
    make: *** [jcapimin.lo] Error 1

    =====================================搜到一文章说======

    有的机器上会出现下列错误:

    libtool: compile: unable to infer tagged configuration

    libtool: compile: specify a tag with `--tag'

     

    这时检查一下 libtool 里的 CC 变量是否设置为 arm-linux-gcc ,如果不是,可以手工改过来,或者设置环境变量lt_compiler=arm-linux-gcc ,重新配置一下。

    ===================================

    这是什么啊,libtool里的环境变量在哪??????




    =========================
    Building ccdv
    Compiling cpufreq.c:                                                  [ERROR]  
      /usr/bin/libtool --silent --mode=compile gcc -DVERSION="002" -DPACKAGE="cpufr
      equtils" -DPACKAGE_BUGREPORT="linux@brodo.de" -D_GNU_SOURCE -pipe -DINTERFACE
      _PROC -DINTERFACE_SYSFS -Os -fomit-frame-pointer -O3 -pipe -mmmx -msse -msse2
       -msse3 -march=pentium4 -Wall -Wchar-subscripts -Wpointer-arith -Wsign-compar
      e -Wno-pointer-sign -Wdeclaration-after-statement -Wshadow -I/usr/lib/gcc/i68
      6-pc-linux-gnu/4.2.0/include -o lib/cpufreq.lo -c lib/cpufreq.c
      libtool: compile: unable to infer tagged configuration
      libtool: compile: specify a tag with `--tag'
    make: *** [lib/cpufreq.lo] Error 1
    


    This is the libtool require a --tag=CC setting
    so change the Makefile and add the options for libtool from

    LIBTOOL_OPT=--silent
    


    to

    LIBTOOL_OPT=--silent --tag=CC
    

    =========================================是在jpeg的的makefile里改,但是没有LIBOOL_OPT 这个选项==

    又找资料,看到一个人写得,是libtool版本低,我又下了一个,刚才是1.5的,现在是2.2,把编译生成的libtool生成后,又按他写得复制两个文件,再编译,通过:

    ==============================================
    错误分析:由于libtool版本过低导致的,重新下载新版本的libtool以默认方式安装,执行以下命令:

    ./configure
    make
    make install

    然后进入jpeg-6b的源码目录,然后执行以下步骤,切记!

    cp /usr/share/libtool/config.sub .
    cp /usr/share/libtool/config.guess .
    ./configure --enable-shared --enable-static
    make

    =======================高兴的太早了,忘了修改makefile,太失败了====================

    目的是生成板子能用得库,而这是pc能用的库!!
    失败

    重新删除jpeg所在文件夹,又解压缩进,把build文件夹建起来,下设
    四个文件夹,/usr/include拷过来,configure后修改makefile 改成arm-linux-gcc,要拷libtool
    时出了个提示,说是否要复盖,没让复盖。拷cp /usr/share/libtool/config.sub .
    cp /usr/share/libtool/config.guess .也说让复盖吗,复盖了。之后编译通过。

    成功。


    在build文件夹下/lib下有了 


    [root@localhost lib]# ls -la
    ×ÜÓÃÁ¿ 160
    drwxr-xr-x    2 root     root         4096  3ÔÂ 20 15:11 .
    drwxr-xr-x    7 root     root         4096  3ÔÂ 20 15:06 ..
    -rwxr-xr-x    1 root     root          495  3ÔÂ 20 15:11 libjpeg.la
    lrwxrwxrwx    1 root     root           17  3ÔÂ 20 15:11 libjpeg.so -> libjpeg.so.62.0.0
    lrwxrwxrwx    1 root     root           17  3ÔÂ 20 15:11 libjpeg.so.62 -> libjpeg.so.62.0.0
    -rwxr-xr-x    1 root     root       144955  3ÔÂ 20 15:11 libjpeg.so.62.0.0

    有两个链接文件。!!把它们都拷过去。


    15:24现在。早晨8点多到现在历时8个小时,终于弄好了。这只是一小步,下一步要编译支持jpeg的qt/e!!!

  • 相关阅读:
    Delphi 与 C/C++ 数据类型对照表
    JAVA中堆和栈的区别
    关于Column '*' not found 解决方案 Hibernate使用SQL查询返回实体类型,即返回某个类,或实体类
    Oracle笔记
    oracle时间运算
    struts2中iterator标签的相关使用
    url传中文,转码
    表格的css,细线表格
    使用struts 2 获取服务器数据 ongl表达式 标签
    struts 2 Commons FileUpload文件上传
  • 原文地址:https://www.cnblogs.com/huty/p/8518215.html
Copyright © 2011-2022 走看看