如何使用Emscripten从Swift编译Hello Word到JavaScript

如何使用Emscripten从Swift编译Hello Word到JavaScript,第1张

概述鉴于最简单的 swift文件: println("lol") 使用xcrun swift -i lol.swift在命令行上运行它或使用xcrun swift lol.swift -o lol编译为可执行文件是微不足道的,但是如何为emscripten进行简单的概念验证? 我以前没有使用过emscripten,但是在http://kripken.github.io/emscripten-site/ 鉴于最简单的 swift文件:
println("lol")

使用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.bcemcc lol.bc

但是得到

Value:   %1 = call { i8*,i64,i64 } @_TFSS37_convertFromBuiltinUTF16StringliteralfMSSFTBp17numberOfCodeUnitsBw_SS(i8* bitcast ([4 x i16]* @0 to i8*),i64 3)LLVM ERROR: Unrecognized struct valueTraceback (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_optassert os.path.exists(target),'Failed to run llvm optimizations: ' + outputAssertionError: Failed to run llvm optimizations:

思考?

问题是LLVM在链接过程中找不到该调用中使用的类型/符号.这些符号很可能是特定于swift框架的.如果使用-v选项运行emcc,则可以获得更多调试信息.您可以考虑提供–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

您可以考虑探索如何将这些链接选项应用于emscripten以获得您想要的内容.没有任何关于此的文档,因为我认为他们并不打算像这样使用swift.

总结

以上是内存溢出为你收集整理的如何使用Emscripten从Swift编译Hello Word到JavaScript全部内容,希望文章能够帮你解决如何使用Emscripten从Swift编译Hello Word到JavaScript所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1031176.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存