Webkit编译踩坑记录

0x00 : 环境及工具

MacOS MoJave 10.14.2

Xcode 10.1

0x01 : 编译过程

  1. 下载源码
1
https://github.com/WebKit/webkit

官网那个太不稳定了,一直挂着代理还容易断,github这个镜像更稳定。

  1. 编译

使用Xcode打开项目,依次打开 File-->Workspace Settings-->,选择Advanced,然后选择Custom,并且在ProductsIntermediates中填写WebkitBuild,设置完毕。

其他设置默认就可以了,然后Xcode的菜单栏Procduct-->Build,慢慢等它编译吧,大概不到10分钟的样子就可以编译好。

最后得到:

1
2
3
4
$ ls
ANGLE.build JavaScriptCore.build PAL.build TestWebKitAPI.build WebInspectorUI.build WebKitTestRunner.build libwebrtc.build
Debug MiniBrowser.build PrecompiledHeaders WTF.build WebKit.build bmalloc.build
DumpRenderTree.build MobileMiniBrowser.build Release WebCore.build WebKitLegacy.build gtest.build

0x02 : 踩坑(dyld: Symbol not found)

在运行编译完的binary的时候,我遇到了报错信息:

1
2
3
4
5
6
$ ./Debug/jsc
dyld: Symbol not found: __ZN3JSC10DisallowGC19s_scopeReentryCountE
Referenced from: /Users/muhe/Code/webkit/WebKitBuild/./Debug/jsc
Expected in: /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore
in /Users/muhe/Code/webkit/WebKitBuild/./Debug/jsc
[1] 64039 abort ./Debug/jsc

搜了很多都无果(可能关键词问题),问了0x9k师傅之后得到了解决方案,原来官网就有解答 囧

解决方法是:设置DYLD_FRAMEWORK_PATH环境变量。

1
export DYLD_FRAMEWORK_PATH=/Users/muhe/Code/webkit/WebKitBuild/Debug

之后就可以正常运行了:

1
2
3
4
5
6
$ ./Debug/jsc
>>> var test = "Hello jsc";
undefined
>>> test
Hello jsc
>>>