0x00 : 环境及工具
MacOS MoJave 10.14.2
Xcode 10.1
0x01 : 编译过程
- 下载源码
1
| https://github.com/WebKit/webkit
|
官网那个太不稳定了,一直挂着代理还容易断,github这个镜像更稳定。
- 编译
使用Xcode打开项目,依次打开 File-->Workspace Settings-->
,选择Advanced
,然后选择Custom
,并且在Products
和Intermediates
中填写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 >>>
|