【问题标题】:Qt configure freetype errorQt配置freetype错误
【发布时间】:2012-09-24 15:01:12
【问题描述】:

我正在尝试为 ARM cortex-8 板构建 QT。

我按照给定的说明成功安装了主机配置:http://qt-project.org/wiki/Building_Qt_for_Embedded_Linux

在 ARM 板目标构建配置时,我创建了自己的 mkspec 文件 linux-TIarmv7-g++ 配置如下:

> #
> # qmake configuration for building with arm-linux-g++
> #
> 
> include(../../common/gcc-base-unix.conf)
> include(../../common/g++-unix.conf) include(../../common/linux.conf)
> include(../../common/qws.conf)
> 
> # modifications to g++.conf
> #Toolchain
> 
> 
> #Compiler Flags to take advantage of the ARM architecture QMAKE_CFLAGS_RELEASE    = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon
> -mfloat-abi=softfp QMAKE_CXXFLAGS_RELEASE = -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp QMAKE_CC                = arm-none-linux-gnueabi-gcc QMAKE_CXX               = arm-none-linux-gnueabi-g++ QMAKE_LINK              =
> arm-none-linux-gnueabi-g++ QMAKE_LINK_SHLIB        =
> arm-none-linux-gnueabi-g++
> 
> # modifications to linux.conf QMAKE_AR = arm-none-linux-gnueabi-ar cqs QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy QMAKE_STRIP =
> arm-none-linux-gnueabi-strip
> 
> QMAKE_INCDIR += $$TSLIB_INCDIR QMAKE_LIBDIR += $$TSLIB_LIBDIR
> QMAKE_LIBS   += -lts
> 
> load(qt_config)

我已经安装了codesourcery工具链,我的环境是Ubuntu 12.04 64位操作系统,目标板是ARM-cortex8

我的配置如下:

./configure -prefix /usr/local/qt-embedded -embedded arm -platform qws/linux-x86_64-g++ -xplatform qws/linux-TIarmv7-g++ -depths 16,24,32 -no-mmx -no -3dnow -no-sse -no-sse2 -no-glib -no-cups -no-largefile -no-accessibility -no-openssl -no-gtkstyle -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse -linuxinput -plugin-mouse-linuxtp -plugin-mouse-pc -fast -confirm-license -v

执行和详细后我得到以下错误:与 freetype 库相关

> m-none-linux-gnueabi/bin/ld: cannot find -lts collect2: ld returned 1
> exit status make: *** [sound] Error 1 sound disabled. FreeType
> auto-detection... () arm-none-linux-gnueabi-g++ -c -pipe -O3
> -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -Wall -W  -I../../../mkspecs/qws/linux-TIarmv7-g++ -I. -o freetype.o freetype.cpp freetype.cpp:42:22: fatal error: ft2build.h: No such file
> or directory compilation terminated. make: *** [freetype.o] Error 1
> FreeType disabled. Determining machine byte-order...
> (/home/rootx/qt-everywhere-opensource-src-4.8.1/mkspecs/qws/linux-TIarmv7-g++
> yes /home/rootx/qt-everywhere-opensource-src-4.8.1
> /home/rootx/qt-everywhere-opensource-src-4.8.1)
> arm-none-linux-gnueabi-g++ -Wl,-O1 -o endiantest endiantest.o     -lts
> /home/rootx/toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld:
> cannot find -lts collect2: ld returned 1 exit status make: ***
> [endiantest] Error 1 Unknown byte order!
> 
> The target system byte order could not be detected!

如何解决这个错误?

【问题讨论】:

    标签: qt configure


    【解决方案1】:

    似乎没有安装 freetype 开发库。

    sudo apt-get install libfreetype6-dev 能解决您的问题吗?

    【讨论】:

    • 好的,等一下,有两件事:看起来你正在运行 make -j4 或类似的东西。你可以在没有线程的情况下运行 make 吗?这样,我们会仔细检查以确保这是事情失败的地方,而不是更早或更晚。另外,您能否执行“updatedb && locate 'ft2build.h',以便我们找出 ft2build.h 在哪里以及它是否在包含路径中?
    • 我只是简单地给出了'make'命令。文件定位后,我收到以下消息:/home/rootx/freetype-2.4.9/devel/ft2build.h /home/rootx/freetype-2.4.9/include/ft2build.h /home/rootx/qt-everywhere-opensource -src-4.8.1/src/3rdparty/freetype/devel/ft2build.h /home/rootx/qt-everywhere-opensource-src-4.8.1/src/3rdparty/freetype/include/ft2build.h /usr/include /ft2build.h
    • 好吧,这似乎不是问题。抱歉,不坐在你身边就很难了。