gee*_*len 7 javascript llvm emscripten swift
鉴于最简单的swift文件:
println("lol")
Run Code Online (Sandbox Code Playgroud)
在命令行上运行它xcrun swift -i lol.swift
或者编译成可执行文件xcrun swift lol.swift -o lol
是很简单的,但是如何为emscripten进行简单的概念验证呢?
我之前没有使用过emscripten,但是在http://kripken.github.io/emscripten-site/docs/getting_started/Tutorial.html上使用C++获得了一个hello world示例,并且想要编译我的Swift代码.
我试过了
xcrun swift lol.swift -emit-bc -o lol.bc
emcc lol.bc
Run Code Online (Sandbox Code Playgroud)
但是得到
Value: %1 = call { i8*, i64, i64 } @_TFSS37_convertFromBuiltinUTF16StringLiteralfMSSFTBp17numberOfCodeUnitsBw_SS(i8* bitcast ([4 x i16]* @0 to i8*), i64 3)
LLVM ERROR: Unrecognized struct value
Traceback (most recent call last):
File "/Users/glen/Downloads/emsdk_portable/emscripten/1.16.0/emcc", line 1540, in <module>
shared.Building.llvm_opt(final, link_opts)
File "/Users/glen/Downloads/emsdk_portable/emscripten/1.16.0/tools/shared.py", line 1267, in llvm_opt
assert os.path.exists(target), 'Failed to run llvm optimizations: ' + output
AssertionError: Failed to run llvm optimizations:
Run Code Online (Sandbox Code Playgroud)
思考?
问题是 LLVM 在链接过程中找不到该调用中使用的类型/符号。这些符号很可能是 swift 框架特有的。如果使用emcc
该-v
选项运行,您可以获得更多调试信息。您可能还考虑提供 --llvm-opts 提示可以找到该信息的位置。
我跑去xcrun swift -v test.swift
看看实际执行了什么命令。
Swift version 1.0 (swift-600.0.34.4.5)
Target: x86_64-apple-darwin13.2.0
/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c -primary-file test.swift -enable-objc-attr-requires-objc-module -target x86_64-apple-darwin13.2.0 -module-name test -color-diagnostics -o /var/folders/69/l9w0zkqn38s1td4_gm5c__km0000gn/T/test-d800d3.o
/usr/bin/ld /var/folders/69/l9w0zkqn38s1td4_gm5c__km0000gn/T/test-d800d3.o -force_load /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_macosx.a -lSystem -arch x86_64 -L /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx -rpath /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx -macosx_version_min 10.9.0 -no_objc_category_merging -o test
Run Code Online (Sandbox Code Playgroud)
您可能会考虑探索如何将这些链接选项应用于 emscripten 以获得您想要的东西。不会有任何关于此的文档,因为我认为他们不打算像这样使用 swift 。
归档时间: |
|
查看次数: |
2691 次 |
最近记录: |