ubuntu18.04编译webkitgtk

本文介绍了如何从webkitgtk官网获取并编译webkitgtk源码,详细步骤包括下载源码、安装依赖、配置、编译以及解决因内存不足导致的编译问题。在编译过程中,通过增加交换文件来扩大内存,最终成功完成编译并安装。测试时发现已启用MiniBrowser功能,同时讨论了可能使用的多媒体解码框架FFmpeg。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.获取webkit源码:

webkit官网获取源码包:

wget -c https://webkitgtk.org/releases/webkitgtk-2.30.0.tar.xz

2.解压源码并安装依赖

执行:

webkitgtk-2.30.0$ ./Tools/gtk/install-dependencies

还需要再安装一个woff2包,执行命令:

sudo apt install libwoff2*

3.配置

Webkit是用cmake构建的,在顶层目录webkitgtk-2.30.0下,执行:

cmake -DPORT=GTK -DCMAKE_BUILD_TYPE=RelWithDebInfo -GNinja -DENABLE_MINIBROWSER=ON -DUSE_WPE_RENDERER=OFF -DENABLE_GAMEPAD=OFF -DENABLE_BUBBLEWRAP_SANDBOX=OFF

4.编译

编译过程非常吃内存,如果内存不足,很可能遇到下面的错误:

为了增加可用内存,最好有足够的交换空间,如果交换分区的空间不足,可以通过增加交换文件的方式在增加交换空间,过程如下:

首先关闭所有交换空间,执行

sudo swapoff -a

创建一个8G的交换文件

sudo dd if=/dev/zero of=/swapfile bs=64M count=128

格式化交换空间为交换分区格式

sudo mkswap /swapfile

修改模式:

sudo chmod 0600 /swapfile 

执行启动所有交换分区

sudo swapon -a
sudo swapon /swapfile
sudo swapon --show

然后继续编译,不再出之前的错误,编译过程中,交换分区和交换文件的占用变化情况如下:

最后发现摄制成8G的交换文件还是不够,不得不外挂一个32G的优盘专门作为交换磁盘,如下图:

内存不够的问题最终解决。

编译完成:

安装,执行ninja install

 5.测试:

安装完成,编译的时候选中了MiniBrowser,实际运行一下:

6.多媒体

可以发现在安装倚赖的过程中安装了libavcodec-dev,所以很可能Webkitgtk利用了FFMPEG作为底层解码框架。

HTML5多媒体测试:

基于gstreamer的多媒体框架:

单进程模式:

结束!

### 安装 libwebkit2gtk-4.1-0 库的方法 要在 Ubuntu 18.04 上安装 `libwebkit2gtk-4.1-0` 库,可以通过以下方式实现: #### 方法一:通过官方软件仓库安装 如果目标版本的库文件已经存在于系统的默认软件仓库中,则可以直接使用 APT 工具完成安装。 运行以下命令来更新本地包索引并尝试安装该库: ```bash sudo apt update sudo apt install libwebkit2gtk-4.0-37 ``` 需要注意的是,在某些情况下,具体的库名称可能略有不同。上述命令中的 `libwebkit2gtk-4.0-37` 是常见的 WebKitGTK 版本之一[^2]。如果需要更精确匹配的目标版本号,请先查询可用的包列表。 #### 方法二:手动编译安装 WebKitGTK 源码 当系统自带的软件仓库不提供所需的特定版本时,可以考虑从源代码构建最新版或指定版本的 WebKitGTK。 以下是具体操作流程: 1. **下载 WebKitGTK 的源码压缩包** 使用 wget 命令从官方网站获取最新的稳定发布版本。 ```bash wget -c https://webkitgtk.org/releases/webkitgtk-2.30.0.tar.xz ``` 2. **解压源码包** 解压刚刚下载好的 tarball 文件以便进一步处理。 ```bash tar xf webkitgtk-2.30.0.tar.xz cd webkitgtk-2.30.0/ ``` 3. **准备必要的开发工具与依赖项** 确保已安装所有必需的构建环境以及支持组件。 ```bash sudo apt build-dep webkitgtk sudo apt install cmake git perl ruby python3-yaml ninja-build bison flex \ gperf gettext libenchant-dev libgeoclue-2.0-dev libgstreamer-plugins-base1.0-dev \ libhyphen-dev libjavascriptcoregtk-4.0-dev libjpeg-turbo8-dev libpng16-16 \ librsvg2-bin libsoup2.4-dev libsqlite3-dev libssl-dev libwoff1 libxml2-utils \ pkg-config valgrind xorg xvfb zlib1g-dev mesa-common-dev libglu1-mesa-dev freeglut3-dev \ libgles2-mesa-dev libegl1-mesa-dev libwayland-dev wayland-protocols libxkbcommon-dev \ libxcb-xfixes0-dev libavifile-0.7-dev libtheora-dev libvpx-dev libopus-dev libwebp-dev \ libharfbuzz-dev libfreetype6-dev fontconfig libcairo2-dev libpixman-1-dev libicu-dev \ libbluetooth-dev bluez-tools libpulse-dev pulseaudio-module-bluetooth alsa-base alsa-utils \ libasound2-dev libatspi2.0-dev at-spi2-core libatk-adaptor libatk-bridge2.0-dev \ gnome-session adwaita-icon-theme humanity-icon-theme oxygen-icon-theme tango-icon-theme \ hicolor-icon-theme gtk-update-icon-cache libnotify-bin notify-osd gir1.2-gtk-3.0 \ gir1.2-appindicator3-0.1 appmenu-registrar unity-settings-daemon ubuntu-system-settings-onlineaccounts \ indicator-application indicator-datetime indicator-keyboard indicator-power indicator-printers \ indicator-session indicator-sound lightdm network-manager-gnome policykit-1-gnome qt5-default \ qttools5-dev qttools5-dev-tools qml-module-org-kde-extensionplugin qml-module-qtmultimedia \ qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-layouts \ qml-module-qtquick-window2 qml-module-qtgraphicaleffects qml-module-qtqml-models2 \ qml-module-qt-labs-folderlistmodel qml-module-qt-labs-settings qml-module-qt-labs-platform \ qml-module-qtwebengine qml-module-qtwebchannel qml-module-qttest qml-module-qtcharts \ qml-module-qtpositioning qml-module-qtsensors qml-module-qtserialport qml-module-qtconnectivity \ qml-module-qtandroidextras qml-module-qtlocation qml-module-qtmultimedia qml-module-qtimageformats \ qml-module-qtremoteobjects qml-module-qtcoap qml-module-qtopcua qml-module-qttls qml-module-qtwebsockets \ qml-module-qtwebview qml-module-qtmacextras qml-module-qtwinextras qml-module-qtactiveqt \ qml-module-qtcanvas3d qml-module-qtfeedback qml-module-qtgamepad qml-module-qtgraphicaleffects \ qml-module-qtmultimediawidgets qml-module-qtscxml qml-module-qtvirtualkeyboard \ qml-module-qtwebenginecore qml-module-qtwebenginewidgets qml-module-qtwebviewwidgets \ qml-module-qtwebsocketsclient qml-module-qtwebviewcomponents qml-module-qtwebviewcontrols \ qml-module-qtwebviewdialogs qml-module-qtwebviewlayouts qml-module-qtwebviewmodels \ qml-module-qtwebviewplugins qml-module-qtwebviewservices qml-module-qtwebviewthemes \ qml-module-qtwebviewutils qml-module-qtwebviewwindows qml-module-qtwebviewworkarounds \ qml-module-qtwebviewworkers qml-module-qtwebviewxml qml-module-qtwebviewxmldom \ qml-module-qtwebviewxmlhttprequest qml-module-qtwebviewxmlserializer qml-module-qtwebviewxpath \ qml-module-qtwebviewxslprocessinginstruction qml-module-qtwebviewxsltprocessor ``` 4. **配置项目参数** 执行 CMake 或其他合适的脚本来初始化构建选项。 ```bash mkdir build && cd build cmake .. ``` 5. **执行实际编译过程** 利用多线程加速整个汇编阶段。 ```bash make -j$(nproc) ``` 6. **最终部署至全局路径下** 将生成的结果复制到标准目录结构里供后续调用。 ```bash sudo make install ``` 以上步骤完成后即可成功加载自定义版本的 `libwebkit2gtk-4.1-0` 动态链接库。 --- ### 注意事项 对于部分特殊需求场景而言,还应额外关注如下几点建议: - 如果遇到缺少 Jasper 图像格式的支持错误提示信息,可参照先前提到的方式补充缺失模块。 ```bash sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt update sudo apt install libjasper1 libjasper-dev ``` - 验证当前操作系统是否处于预期状态,特别是针对跨发行版升级后的遗留问题排查尤为重要[^3]。 - 调整时间区域设置以避免潜在同步冲突情况发生[^4]。 ```bash sudo dpkg-reconfigure tzdata ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值