当前位置:首页 » 编程软件 » 交叉编译提示后缀格式

交叉编译提示后缀格式

发布时间: 2022-06-04 18:46:07

1. 使用hane NFS和Ubuntu交叉编译,成功了,但是在编译安装源码时出现: 遗漏分隔符 。 停止等错误。

Windows下的日志文件格式是NTFS,而linux下日志文件格式大多是ext4,通过挂载NTFS格式在ext4下,然后在NTFS下编译文件,一般并不推荐这样做。

本来两者处理文件的方式方法就不尽相同,平时通过ntfs-3g 挂载下文件还可以,具体编译软件的话中间会涉及到比较多次的NTFS和ext4文件的转化问题。所以不建议挂载在NTFS格式下编译软件。
一般编译的话有个比较好的习惯是源码包到/tmp或者直接cd 到 /tmp下wget源码包编译。tmpfs(也就是/tmp)的一个主要的好处是它闪电般的速度。tmpfs 文件系统会完全驻留在内存中,读写几乎可以是瞬间的。(重启后文件消失,所以只能放临时文件)

2. Linux嵌入式交叉编译工具链问题 浅谈

简介

交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc 3个部分组成。有时出于减小libc库大小的考虑,也可以用别的c库来代替glibc,例如uClibc、dietlibc和newlib。交叉编译工具链主要包括针对目标系统的编译器gcc、目标系统的二进制工具binutils、目标系统的标准c库glibc和目标系统的Linux内核头文件。第一个步骤就是确定目标平台。每个目标平台都有一个明确的格式,这些信息用于在构建过程中识别要使用的不同工具的正确版本。因此,当在一个特定目标机下运行GCC时,GCC便在目录路径中查找包含该目标规范的应用程序路径。GNU的目标规范格式为CPU-PLATFORM-OS。例如,建立基于ARM平台的交叉工具链,目标平台名为arm-linux-gnu。

交叉编译工具链的制作方法

  1. 分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。

  2. 通过Crosstool脚本工具来实现一次编译生成交叉编译工具链。

  3. 直接通过网上(ftp.arm.kernel.org.uk)下载已经制作好的交叉编译工具链。

方法1相对比较困难,适合想深入学习构建交叉工具链的读者。如果只是想使用交叉工具链,建议使用方法2或方法3构建交叉工具链。方法3的优点不用多说,当然是简单省事,但与此同时该方法有一定的弊端就是局限性太大,因为毕竟是别人构建好的,也就是固定的没有灵活性,所以构建所用的库以及编译器的版本也许并不适合你要编译的程序,同时也许会在使用时出现许多莫名的错误,建议你慎用此方法。


方法1:分步构建交叉编译工具链


  1. 下载所需的源代码包

  2. 建立工作目录

  3. 建立环境变量

  4. 编译、安装Binutils

  5. 获取内核头文件

  6. 编译gcc的辅助编译器

  7. 编译生成glibc库

  8. 编译生成完整的gcc

由于在问答中的篇幅,我不能细述具体的步骤,兴趣的同学请自行阅读开源共创协议的《Linux from scratch》,网址是:linuxfromscratch dot org


方法2:用Crosstool工具构建交叉工具链(推荐)

Crosstool是一组脚本工具集,可构建和测试不同版本的gcc和glibc,用于那些支持glibc的体系结构。它也是一个开源项目,下载地址是kegel dot com/crosstool。用Crosstool构建交叉工具链要比上述的分步编译容易得多,并且也方便许多,对于仅仅为了工作需要构建交叉编译工具链的你,建议使用此方法。

运行which makeinfo,如果不能找见该命令,在解压texinfo-4.11.tar.bz2,进入texinfo-4.11目录,执行./configure&&make&&make install完成makeinfo工具的安装

  • 准备文件:

下载所需资源文件linux-2.4.20.tar.gz、binutils-2.19.tar.bz2、gcc-3.3.6.tar.gz、glibc- 2.3.2.tar.gz、glibc-linuxthreads-2.3.2.tar.gz和gdb-6.5.tar.bz2。然后将这些工具包文件放在新建的$HOME/downloads目录下,最后在$HOME/目录下解压crosstool-0.43.tar.gz,命

令如下:
#cd$HOME/
#tar–xvzfcrosstool-0.43.tar.gz
  • 建立脚本文件

接着需要建立自己的编译脚本,起名为arm.sh,为了简化编写arm.sh,寻找一个最接近的脚本文件demo-arm.sh作为模板,然后将该脚本的内容复制到arm.sh,修改arm.sh脚本,具体操作如下:

# cd crosstool-0.43

# cp demo-arm.sh arm.sh

# vi arm.sh

修改后的arm.sh脚本内容如下:

#!/bin/sh
set-ex
TARBALLS_DIR=$HOME/downloads#定义工具链源码所存放位置。
RESULT_TOP=$HOME/arm-bin#定义工具链的安装目录
exportTARBALLS_DIRRESULT_TOP
GCC_LANGUAGES="c,c++"#定义支持C,C++语言
exportGCC_LANGUAGES
#创建/opt/crosstool目录
mkdir-p$RESULT_TOP
#编译工具链,该过程需要数小时完成。
eval'catarm.datgcc-3.3.6-glibc-2.3.2.dat'shall.sh--notest
echoDone.
  • 建立配置文件

在arm.sh脚本文件中需要注意arm-xscale.dat和gcc-3.3.6-glibc-2.3.2.dat两个文件,这两个文件是作为Crosstool的编译的配置文件。其中arm.dat文件内容如下,主要用于定义配置文件、定义生成编译工具链的名称以及定义编译选项等。

KERNELCONFIG='pwd'/arm.config#内核的配置
TARGET=arm-linux#编译生成的工具链名称
TARGET_CFLAGS="-O"#编译选项


gcc-3.3.6-glibc-2.3.2.dat文件内容如下,该文件主要定义编译过程中所需要的库以及它定义的版本,如果在编译过程中发现有些库不存在时,Crosstool会自动在相关网站上下载,该工具在这点上相对比较智能,也非常有用。

BINUTILS_DIR=binutils-2.19
GCC_DIR=gcc-3.3.6
GLIBC_DIR=glibc-2.3.2
LINUX_DIR=linux-2.6.10-8(根据实际情况填写)
GDB_DIR=gdb-6.5
  • 执行脚本

将Crosstool的脚本文件和配置文件准备好之后,开始执行arm.sh脚本来编译交叉编译工具。具体执行命令如下:

#cdcrosstool-0.43
#./arm.sh

经过数小时的漫长编译之后,会在/opt/crosstool目录下生成新的交叉编译工具,其中包括以下内容:

arm-linux-addr2linearm-linux-g++arm-linux-ldarm-linux-size
arm-linux-ararm-linux-gccarm-linux-nmarm-linux-strings
arm-linux-asarm-linux-gcc-3.3.6arm-linux-objarm-linux-strip
arm-linux-c++arm-linux-gccbugarm-linux-objmpfix-embedded-paths
arm-linux-c++filtarm-linux-gcovarm-linux-ranlib
arm-linux-cpparm-linux-gprofarm-linux-readelf
  • 添加环境变量

然后将生成的编译工具链路径添加到环境变量PATH上去,添加的方法是在系统/etc/ bashrc文件的最后添加下面一行,在bashrc文件中添加环境变量

export PATH=/home/jiabing/gcc-3.3.6-glibc-2.3.2/arm-linux-bin/bin:$PATH

至此,arm-linux下的交叉编译工具链已经完成,现在就可以使用arm-linux-gcc来生成试验箱上的程序了!












3. ARM交叉编译时链接错误,提示collect2: ld returned 1 exit status,求解答

libVimbaC.so编译的不对, 使用arm gcc链接so命令:
arm-none-linux-gnueabi-gcc -o libVimbaC.so -shared ..... VimbaC.cpp
就可以编译出arm下用的动态库了.

4. linux下用交叉编译器编译时,已经指定了库的路径跟库的名字,可是还是报错找不到库。

看起来它不是个库,倒像是个可执行程序
一般so都放在lib这样的目录下,你这个是bin,而且和它在一起的都是可执行程序,并且它没有so后缀名。

5. linux交叉编译生成的文件如何下载。

用开发板自带的烧写程序

6. 交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别

自己之前一直没搞清楚这两个交叉编译器到底有什么问题,特意google一番,总结如下,希望能帮到道上和我有同样困惑的兄弟…..
一. 什么是ABI和EABI
1) ABI: 二进制应用程序接口(Application Binary Interface (ABI) for the ARM Architecture)
在计算机中,应用二进制接口描述了应用程序(或者其他类型)和操作系统之间或其他应用程序的低级接口.
ABI涵盖了各种细节,如:
数据类型的大小、布局和对齐;
调用约定(控制着函数的参数如何传送以及如何接受返回值),例如,是所有的参数都通过栈传递,还是部分参数通过寄存器传递;哪个寄存器用于哪个函数参数;通过栈传递的第一个函数参数是最先push到栈上还是最后;
系统调用的编码和一个应用如何向操作系统进行系统调用;
以及在一个完整的操作系统ABI中,目标文件的二进制格式、程序库等等。
一个完整的ABI,像Intel二进制兼容标准 (iBCS) ,允许支持它的操作系统上的程序不经修改在其他支持此ABI的操作体统上运行。
ABI不同于应用程序接口(API),API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译,ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。
2) EABI: 嵌入式ABI
嵌入式应用二进制接口指定了文件格式、数据类型、寄存器使用、堆积组织优化和在一个嵌入式软件中的参数的标准约定。
开发者使用自己的汇编语言也可以使用EABI作为与兼容的编译器生成的汇编语言的接口。
支持EABI的编译器创建的目标文件可以和使用类似编译器产生的代码兼容,这样允许开发者链接一个由不同编译器产生的库。
EABI与关于通用计算机的ABI的主要区别是应用程序代码中允许使用特权指令,不需要动态链接(有时是禁止的),和更紧凑的堆栈帧组织用来节省内存。广泛使用EABI的有Power PC和ARM.
二. gnueabi相关的两个交叉编译器: gnueabi和gnueabihf
在debian源里这两个交叉编译器的定义如下:
gcc-arm-linux-gnueabi – The GNU C compiler for armel architecture
gcc-arm-linux-gnueabihf – The GNU C compiler for armhf architecture
可见这两个交叉编译器适用于armel和armhf两个不同的架构, armel和armhf这两种架构在对待浮点运算采取了不同的策略(有fpu的arm才能支持这两种浮点运算策略)
其实这两个交叉编译器只不过是gcc的选项-mfloat-abi的默认值不同. gcc的选项-mfloat-abi有三种值soft,softfp,hard(其中后两者都要求arm里有fpu浮点运算单元,soft与后两者是兼容的,但softfp和hard两种模式互不兼容):
soft : 不用fpu进行浮点计算,即使有fpu浮点运算单元也不用,而是使用软件模式。
softfp : armel架构(对应的编译器为gcc-arm-linux-gnueabi)采用的默认值,用fpu计算,但是传参数用普通寄存器传,这样中断的时候,只需要保存普通寄存器,中断负荷小,但是参数需要转换成浮点的再计算。
hard : armhf架构(对应的编译器gcc-arm-linux-gnueabihf)采用的默认值,用fpu计算,传参数也用fpu中的浮点寄存器传,省去了转换, 性能最好,但是中断负荷高。
把以下测试使用的c文件内容保存成mfloat.c:
#include <stdio.h>
int main(void)
{
double a,b,c;
a = 23.543;
b = 323.234;
c = b/a;
printf(“the 13/2 = %f\n”, c);
printf(“hello world !\n”);
return 0;
}
1)使用arm-linux-gnueabihf-gcc编译,使用“-v”选项以获取更详细的信息:
# arm-linux-gnueabihf-gcc -v mfloat.c
COLLECT_GCC_OPTIONS=’-v’ ‘-march=armv7-a’ ‘-mfloat-abi=hard’ ‘-mfpu=vfpv3-d16′ ‘-mthumb’
-mfloat-abi=hard,可看出使用hard硬件浮点模式。
2)使用arm-linux-gnueabi-gcc编译:
# arm-linux-gnueabi-gcc -v mfloat.c
COLLECT_GCC_OPTIONS=’-v’ ‘-march=armv7-a’ ‘-mfloat-abi=softfp’ ‘-mfpu=vfpv3-d16′ ‘-mthumb’
-mfloat-abi=softfp,可看出使用softfp模式。
三. 拓展阅读
下文阐述了ARM代码编译时的软浮点(soft-float)和硬浮点(hard-float)的编译以及链接实现时的不同。从VFP浮点单元的引入到软浮点(soft-float)和硬浮点(hard-float)的概念
VFP (vector floating-point)
从ARMv5开始,就有可选的 Vector Floating Point (VFP) 模块,当然最新的如 Cortex-A8, Cortex-A9 和 Cortex-A5 可以配置成不带VFP的模式供芯片厂商选择。
VFP经过若干年的发展,有VFPv2 (一些 ARM9 / ARM11)、 VFPv3-D16(只使用16个浮点寄存器,默认为32个)和VFPv3+NEON (如大多数的Cortex-A8芯片) 。对于包含NEON的ARM芯片,NEON一般和VFP公用寄存器。
硬浮点Hard-float
编译器将代码直接编译成发射给硬件浮点协处理器(浮点运算单元FPU)去执行。FPU通常有一套额外的寄存器来完成浮点参数传递和运算。
使用实际的硬件浮点运算单元FPU当然会带来性能的提升。因为往往一个浮点的函数调用需要几个或者几十个时钟周期。
软浮点 Soft-float
编译器把浮点运算转换成浮点运算的函数调用和库函数调用,没有FPU的指令调用,也没有浮点寄存器的参数传递。浮点参数的传递也是通过ARM寄存器或者堆栈完成。
现在的Linux系统默认编译选择使用hard-float,即使系统没有任何浮点处理器单元,这就会产生非法指令和异常。因而一般的系统镜像都采用软浮点以兼容没有VFP的处理器。
armel ABI和armhf ABI
在armel中,关于浮点数计算的约定有三种。以gcc为例,对应的-mfloat-abi参数值有三个:soft,softfp,hard。
soft是指所有浮点运算全部在软件层实现,效率当然不高,会存在不必要的浮点到整数、整数到浮点的转换,只适合于早期没有浮点计算单元的ARM处理器;
softfp是目前armel的默认设置,它将浮点计算交给FPU处理,但函数参数的传递使用通用的整型寄存器而不是FPU寄存器;
hard则使用FPU浮点寄存器将函数参数传递给FPU处理。
需要注意的是,在兼容性上,soft与后两者是兼容的,但softfp和hard两种模式不兼容。
默认情况下,armel使用softfp,因此将hard模式的armel单独作为一个abi,称之为armhf。
而使用hard模式,在每次浮点相关函数调用时,平均能节省20个CPU周期。对ARM这样每个周期都很重要的体系结构来说,这样的提升无疑是巨大的。
在完全不改变源码和配置的情况下,在一些应用程序上,使用armhf能得到20%——25%的性能提升。对一些严重依赖于浮点运算的程序,更是可以达到300%的性能提升。
Soft-float和hard-float的编译选项
在CodeSourcery gcc的编译参数上,使用-mfloat-abi=name来指定浮点运算处理方式。-mfpu=name来指定浮点协处理的类型。
可选类型如fpa,fpe2,fpe3,maverick,vfp,vfpv3,vfpv3-fp16,vfpv3-d16,vfpv3-d16-fp16,vfpv3xd,vfpv3xd-fp16,neon,neon-fp16,vfpv4,vfpv4-d16,fpv4-sp-d16,neon-vfpv4等。
使用-mfloat-abi=hard (等价于-mhard-float) -mfpu=vfp来选择编译成硬浮点。使用-mfloat-abi=softfp就能兼容带VFP的硬件以及soft-float的软件实现,运行时的连接器ld.so会在执行浮点运算时对于运算单元的选择,
是直接的硬件调用还是库函数调用,是执行/lib还是/lib/vfp下的libm。-mfloat-abi=soft (等价于-msoft-float)直接调用软浮点实现库。
在ARM RVCT工具链下,定义fpu模式:
–fpu softvfp
–fpu softvfp+vfpv2
–fpu softvfp+vfpv3
–fpu softvfp+vfpv_fp16
–fpu softvfp+vfpv_d16
–fpu softvfp+vfpv_d16_fp16.
定义浮点运算类型
–fpmode ieee_full : 所有单精度float和双精度double的精度都要和IEEE标准一致,具体的模式可以在运行时动态指定;
–fpmode ieee_fixed : 舍入到最接近的实现的IEEE标准,不带不精确的异常;
–fpmode ieee_no_fenv :舍入到最接近的实现的IEEE标准,不带异常;
–fpmode std :非规格数flush到0、舍入到最接近的实现的IEEE标准,不带异常;
–fpmode fast : 更积极的优化,可能会有一点精度损失。

7. Qt交叉编译遇到的问题

QT相关的安装软件包:

(1) tmake-1.13.tar.gz (编译工具,如progen与tmake)

(2) qt-embedded-2.3.7.tar.gz (提供了qte的库)

(3) qt-x11-2.3.2.tar.gz (为了生成相应的QT工具,如designer和qvfb等)

(4) qtopia-free-1.7.0.tar.gz (QTE的桌面环境程序)

(5) cross-3.3.2.tar.bz2 (交叉编译工具)

一、安装工具

1 安装 tmake

在 Linux 命令模式下运行以下命令:

tar xfz tmake-1.11.tar.gz

export TMAKEDIR=$PWD/tmake-1.11

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

export PATH=$TMAKEDIR/bin:$PATH

2 安装 Qt/Embedded 2.3.7

在 Linux 命令模式下运行以下命令:

tar xfz qt-embedded-2.3.7.tar.gz

cd qt-2.3.7

export QTDIR=$PWD

export QTEDIR=$QTDIR

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure –qconfig local–qvfb -depths 4,8,16,32

make sub-src

cd ..

上述命令 ./configure -qconfig -qvfb -depths 4,8,16,32 指定 Qt 嵌入式开发包生成虚拟缓冲帧工具qvfb,并支持 4,8,16,32 位的显示颜色深度。另外我们也可以在 configure 的参数中添加-system-jpeg 和 gif,使 Qt/Embedded 平台能支持 jpeg、gif 格式的图形。

上述命令 make sub-src 指定按精简方式编译开发包,也就是说有些 Qt 类未被编译。Qt 嵌入式开发包有 5种编译范围的选项,使用这些选项,可控制 Qt 生成的库文件的大小,但是您的应用所使用到的一些 Qt 类将可能因此在 Qt 的库中找不到链接。编译选项的具体用法可运行./configure -help 命令查看。

在这一过程的configure中出现了问题:有一个变量没有声明,发现是少了一个头文件,加上即可,make顺利通过,看到了enjoy!

3 安装 Qt/X11 2.3.2

在 Linux 命令模式下运行以下命令:

tar xfz qt-x11-2.3.2.tar.gz

cd qt-2.3.2

export QTDIR=$PWD

export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

./configure -no-opengl

make

make -C tools/qvfb

mv tools/qvfb/qvfb bin

cp bin/uic $QTEDIR/bin

cd ..

根据开发者本身的开发环境,也可以在 configure 的参数中添加别的参数, 比如-no-opengl 或-no-xfs,可以键入./configure -help 来获得一些帮助信息。

在这个安装过程中也出现了很多错误,典型的就是在make过程中:

/usr/local/qt-2.3.2/include/qvaluestack.h:57: error: cannot convert 'QValueListIterator<QMap<QString, QString> >' to 'const char*' for argument '1' to 'int remove(const char*)'

/usr/local/qt-2.3.2/include/qvaluestack.h: In member function 'T QValueStack<T>::pop() [with T = QString]':

xml/qxml.cpp:2502: instantiated from here

/usr/local/qt-2.3.2/include/qvaluestack.h:57: error: cannot convert 'QValueListIterator<QString>' to 'const char*' for argument '1' to 'int remove(const char*)'

make[2]: *** [xml/qxml.o] Error 1

make[2]: Leaving directory `/usr/local/qt-2.3.2/src'

make[1]: *** [sub-src] Error 2

make[1]: Leaving directory `/usr/local/qt-2.3.2'

make: *** [init] Error 2

这个错误是说,在文件qvaluestack.h的57行出错。改正方法是修改文件qt-2.3.2/ include/qvaluestack.h的 第57行,将remove( this->fromLast() );改为 this->remove( this->fromLast() );

修改时可能要更改文件权限,变成可写的,chmod 666 qvaluestack.h。然后make顺利通过,看到了enjoy。

二、交叉编译 Qt/Embedded 的库

开发居于 Qt/Embedded 的应用程序要使用到 Qt/Embedded 的库,编写的 Qt 嵌入式应用程序最终是在YLE270开发板上运行的,因此在把 Qt 嵌入式应用程序编译成支持 YLE270 的目标代码之前,需要两样东西,一个是 arm9 的 linux 编译器,另一个是经 arm9 的linux 编译器编译过的 Qt/Embedded 的库。安装交叉编译工具 cross-3.3.2 前面已经安装过了。

这一步主要是配置 Qt/Embedded2.3.7 的安装,Qt/Embedded 的安装选项有很多个,您可以在命令行下直接输入“./configure”来运行配置,这时安装程序会一步一步提示你输入安装选项。您也可以在“./configure”后输入多个安装选项直接完成安装的配置。在这些选项中有一个选项决定了编译 Qt/Embedded 库的范围,即可以指定以最小,小,中,大,完全 5 种方式编译 Qt/Embedded 库。另外 Qt/Embedded 的安装选项还允许我们自己定制一个配置文件,来有选择的编译 Qt/Embedded 库,这个安装选项是“-qconfig local” ;当我们指定这个选项时,Qt/Embedded库在安装过程中会寻找qt-2.3.7/src/tools/qconfig-local.h 这个文件,如找到这个文件,就会以该文件里面定义的宏,来编译链接 Qt/Embedded 库。

具体过程如下:

cd qt-2.3.7

export QTDIR=$PWD

export QTEDIR=$QTDIR

make clean

./configure –xplatform linux-arm-g++ -shared –debug (接下行)

-qconfig local -qvfb -depths 4,8,16,32

make

cd ..

在make中出现了错误,有变量没有声明,原来是优龙公司为了避免初学者在一开始就直接接触到 Qt/Embedde 的复杂的宏编译选项,把这些宏定义到一个名为 qconfig-local.h的安装配置文件中,在安装 Qt/Embedded 的时候,需要把这个文件复制到 Qt/Embedded 的安装路径的/src/tools 子路径下,

cp /配置文件所在路径/qconfig-local.h ./src/tools

make顺利通过,看到了enjoy。

最后就可以在命令行下输入make 命令对整个工程进行编译链接了,在这里,要把过程中产生的文件放在同一个文件夹里面,方便应用。

在最后make完毕以后我还是遇到了一个问题,就是生成的可执行文件不能运行,运行时提示:./hello cannot execute binary file,当然不能直接在自己的主机上运行了,因为生成的二进制文件要下到板子上运行的。接上液晶屏,板子上电,把生成的可执行文件下载到板子上,要chmod一下,不然权限不够,终于在液晶屏上看到了自己弄的小程序,好开心!

三、添加一个 Qt/Embedded 应用到 QPE

以hello,world!为例

1 在工作的机器上解包 qtopia

tar zxvf qtopia-free-1.7.x.tar.gz

cd qtopia-free-1.7.x

export QTDIR=$QTEDIR

export QPEDIR=$PWD

export PATH=$QPEDIR/bin:$PATH

注意在上面已经设定环境变量 QPEDIR 为 QPE 的安装(解包)路径。

2 建立 Hello,World 的例子程序的图标文件

方法是:制作一个 32 X 32 大小的 PNG 格式的图标文件,将该文件存放在$QPEDIR/pics/inline 目录下,然后使用以下命令将$QPEDIR/pics/inline 目录下的所有图形文件转换成为一个 c 语言的头文件,这个头文件包含了该目录下的图形文件的 rgb 信息。

qembed --images $QPEDIR/pics/inline/*.*

> $QPEDIR/src/libraries/qtopia/inlinepics_p.h

3 交叉编译 qtopia

在$QPEDIR 路径下,运行以下命令

cd src

./configure –platform linux-arm-g++

make

cd ..

在这一过程中也出现了比较大的错误,在make的时候又出现了error,是resource.cpp的174行的变量qembed_findImage没有声明,考虑到以前遇到的情况,推断可能是少了某个头文件,但是又不知道是哪一个,google了很久都没有找到解决办法,没办法只好点开src/libraries/qtopia下面的每一个头文件看了一遍,还是没有发现有含有这个变量的文件,继续google,然后发现了inlinepics_p.h中包含qembed_findImage,于是vi /usr/local/qtopia-free-1.7.0/src/libraries/qtopia/inlinepics_p.h,发现inlinepics_p.h是空白的,原来是

qembed --images $QPEDIR/pics/inline/*.*

> $QPEDIR/src/libraries/qtopia/inlinepics_p.h

出了错误,重新操作一遍这一步,再查看inlinepics_p.h,发现正常了,要继续交叉编译qtopia:

make clean

./configure –platform linux-arm-g++

热点内容
php配置mail 发布:2024-05-19 11:52:37 浏览:906
欧洲国家的云服务器 发布:2024-05-19 11:43:30 浏览:44
左游手柄助手2脚本 发布:2024-05-19 11:40:28 浏览:1002
挖矿需要什么配置 发布:2024-05-19 11:38:02 浏览:895
eclipse导出ant脚本 发布:2024-05-19 11:20:28 浏览:99
如何改变vivo手机账户密码 发布:2024-05-19 10:56:07 浏览:377
sql的length函数 发布:2024-05-19 10:55:15 浏览:546
数据库管理系统设计报告 发布:2024-05-19 10:49:50 浏览:685
linux怎么将驱动编译进内核 发布:2024-05-19 10:23:47 浏览:768
c语言读程序题 发布:2024-05-19 10:13:52 浏览:675