看了一个文章:

=====================================
谢论坛内各位的帮助,我的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 做准备:

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

编译软件包:

  1. <kbd>make</kbd>

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

安装软件包:

  1. <kbd>make install
  2.  
  3. </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里的环境变量在哪??????

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

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

  1. LIBTOOL_OPT=--silent

to

  1. 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!!!

【Linux开发】为qt-embedded添加jpeg库的交叉编译方法for arm的更多相关文章

  1. Qt中添加静态库.lb,.a和动态库.dll,.so,头文件和.cpp文件

    添加步骤 1.-Qt Creator中,"项目"------"添加库"2.把静态库和动态库文件放到项目文件夹中3.在.pro文件中会添加如下代码: - 添加动态 ...

  2. NDK 开发实例二(添加 Eigen库)

    上一篇,我已经阐述了如何创建一个简单的NDK实例: NDK 开发实例一(Android.mk环境配置下) 在上一篇的基础上,我们来添加Eigen库,然后做一个简单实例. Eigen是一个高层次的C + ...

  3. QT中添加 动态库(.so) 和 静态库 (.a) 的方法

    在QT 的Makefile文件中: 1 添加动态库,如lipcap.so 则,在LIBS一行中添加“-L/usr/local/lib -lpcap”,依据自己的情况修改libpcap.so的路径 2 ...

  4. 【Qt开发】【Linux开发】Qt程序在嵌入式设备(arm) 上运行,鼠标擦除界面的解决方案

    笔者最近想在arm开发板上,开发一个应用程序,经过网上查询发现qt作为跨平台开发软件很不错,于是便选择了qt开发,笔者的qt版本是4.8.6的.由于arm的主频太低,在arm上进行开发编译,效率会大大 ...

  5. Qt中添加OpenCV库

    配置在Qt中的OpenCV,看了很多“教程”,最终成功.记一下过程. 本机配置: window7 32位系统: qt-opensource-windows-x86-mingw492-5.5.1: Op ...

  6. windows系统中给qt工程添加第三方库

    · TEMPLATE = app CONFIG += console c++11 CONFIG -= app_bundle CONFIG -= qt SOURCES += main.cpp LIBS ...

  7. QT Creator 添加Lib库

    LIBS += -LD:/Path/ -lTest1.lib -lTest2.lib 解析:在路径D:/Path/ 下 添加Test1.lib Test2.lib库 -L 和小写'-l"没有 ...

  8. 【Qt开发】【Linux开发】QT设置环境变量QWS_DISPLAY

    QT设置环境变量QWS_DISPLAY 当应用程序./myQtApp -qws启动时,会去检测QWS_DISPLAY这个环境变量, 判断界面最终显示在哪个framebuffer中, 如果是虚拟的fra ...

  9. 【Linux开发】【Qt开发】配置tslibs触摸屏库环境设置调试对应的设备挂载点

    [Linux开发][Qt开发]配置tslibs触摸屏库环境设置调试对应的设备挂载点 标签(空格分隔): [Linux开发] [Qt开发] 比如: cat /dev/input/mice cat /de ...

随机推荐

  1. Ubuntu利用ROS搭建手机移动网络摄像头(Android)

    所需设备 PC -> Ubuntu 16.04 - > ROS Kinetic Android系统手机 1.Android移动端APP下载安装 配置手机端:(一般默认即可RTSP) 2.源 ...

  2. js常用操作

    map操作:var map = {};map["a"] = 1;map["b"] = 2; console.log(Object.keys(map)); //[ ...

  3. SQL语句 函数

    6.4 Functions   6.4.1 Numeric abs/mod 绝对值/求模 sqrt/power/exp 求幂 ceil/floor/round 取整 trunc 截取小数点 sin/c ...

  4. Gym-100923A-Por Costel and Azerah(DP)

    链接: https://vjudge.net/problem/Gym-100923A 题意: Por Costel the Pig has received a royal invitation to ...

  5. JDBC与Hibernate的区别

    相同点: ◆两者都是JAVA的数据库操作中间件. ◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭. ◆两者都可以对数据库的更新操作进行显式的事务处理. 不同点: ◆使用的SQL语言 ...

  6. pyqt5-QTDesigner--UI文件的使用方式

    方式一:直接加载UI文件 from PyQt5.QtWidgets import QApplication, QWidget import sys class win(QWidget): def __ ...

  7. 【NOIP2016提高A组模拟9.15】Map

    题目 分析 发现,当原图是一棵树的时候,那么新建一条边后,就会变成环套树, 而环内的所有点对都是安全点对,如果环中有k个点,答案就是\(k(k-1)\) 联想到,当把原图做一遍tarjan缩点,每个环 ...

  8. JDBC接口封装

    package cn.piesat.sparkproject.jdbc; import java.sql.Connection;import java.sql.DriverManager;import ...

  9. python 操作符**与*的用法

  10. 1222/2516. Kup

    题目描述 Description 首先你们得承认今天的题目很短很简洁... 然后,你们还得承认接下来这个题目的描述更加简洁!!! Task:给出一个N*N(1≤N≤2000)的矩阵,还给出一个整数K. ...