"未定义参考"由于缺少ICU库,将webkitwidgets模块构建为自编Qt5?

时间:2015-07-21 11:04:37

标签: qt qtwebkit icu

我已经从源代码构建了Qt 5库到Ubuntu 12.04并制作了一个Qt测试应用程序。在.pro文件中,我写了QT += core gui webkitwidgets以在我的测试项目中使用Qwebview。

但是当我将qmake运行到Qt创建者时,它会给我错误:

Unknown module(s) in QT: webkitwidgets

我认为当我从源代码构建Qt 5库时,webkit或webkitwidgets模块不是由源构建的。

所以我从源代码构建了qtwebkit或webkitwdgtes模块,如下所示。

cd qtwebkit    
qmake    
make -jX 

其中X是核数* 2 + 1

但是当我运行make命令时,我得到了以下错误。

StringImpl.cpp:(.text+0x64ad): undefined reference to u_strToUpper_51'
StringImpl.cpp:(.text+0x6636): undefined reference to u_toupper_51'
DatePrototype.cpp:(.text+0x328): undefined reference to udat_open_51'
DatePrototype.cpp:(.text+0x366): undefined reference to udat_close_51'
JSGlobalObjectFunctions.cpp:(.text+0x99f): undefined reference tou_charType_51'
StringImpl.cpp:(.text+0xa00): undefined reference tou_foldCase_51'
CollatorICU.cpp:(.text+0x1f1): undefined reference to ucol_getLocaleByType_51' CollatorICU.cpp:(.text+0x20f): undefined reference toucol_getAttribute_51'
CollatorICU.cpp:(.text+0x25b): undefined reference to ucol_open_51'
CollatorICU.cpp:(.text+0x27f): undefined reference toucol_open_51'
CollatorICU.cpp:(.text+0x2a4): undefined reference to ucol_setAttribute_51'

以及更多此类未定义的引用错误。

此外,我发现qtwebkit模块使用ICU库(在我的机器上丢失)。

那么如何将ICU库构建到Ubuntu中,以便qtwebkit模块可以参考已编译的ICU库,我可以修复这些引用错误并成功构建qtwebkit。

3 个答案:

答案 0 :(得分:0)

我通过从Qt / lib文件夹中删除ICU库来修复了类似的错误。 如果在OS库中安装了另一个版本的ICU,则会发生冲突。

答案 1 :(得分:0)

你试过这个吗?:

sudo apt-get install libqt5webkit5-qmlwebkitplugin libqt5webkit5.

RESOURCES += \
    resources.qrc

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets webkit webkitwidgets

然而,即使我为我的项目工作,webkit也会提出更多问题,例如从UI工具栏中丢失或者当时没有编译将程序发布到Store。我建议研究其他解决方案 QWebEngineView

答案 2 :(得分:-2)

尝试使用apt-get:

安装软件包
sudo apt-get install libqt5webkit5-dev