当前位置: 首页 > wzjs >正文

日本做头像的网站可以免费打广告的网站

日本做头像的网站,可以免费打广告的网站,做网站界面多少钱,深圳自己做网站目录 引言 Linux主机如何编译产生Windows可执行文件 Windows部署执行可执行文件 分发运行时库 中文乱码问题 CMD窗口下解决方案 PowerShell解决方案 修改系统配置的解决方案 在程序中指定代码页的解决方案 Windows主机交叉编译Linux可执行文件存在的问题 结语 引言 …

目录

引言

Linux主机如何编译产生Windows可执行文件

Windows部署执行可执行文件

分发运行时库

中文乱码问题

CMD窗口下解决方案

PowerShell解决方案

修改系统配置的解决方案

在程序中指定代码页的解决方案

Windows主机交叉编译Linux可执行文件存在的问题

结语


引言

交叉编译能让开发者在一个平台上生成适用于其他平台的可执行文件或库。这在跨平台应用开发、适配不同硬件架构设备时极为重要,比如在一个平台下完成程序的开发,就可利用交叉编译快速完成其他平台的适配。这个问题在华为仓颉的文档中没有提到,它主要是介绍本机开发,接下来,就为分享一些我用华为仓颉语言交叉编译的相关内容。

Linux主机如何编译产生Windows可执行文件

我在华为云提供的免费开发者云主机上安装了仓颉的SDK。华为云主机是x86_64架构的,操作系统使用的是Ubuntu。

先编写了一个简单的 “Hello World” 仓颉程序,存放在名为 “hello_world” 的目录下,源文件为 “hello.cj”。

// hello.cj
main() {println("你好,仓颉")
}

通过在终端进入该目录,执行编译命令 “cjc hello.cj” ,编译完成后,会生成如 main(在 Linux 环境下)这样的可执行文件,以及 default.cjo 和 default.bchir2 等相关文件 。

我们现在想在Linux环境下编译产生Windows的可执行文件main.exe,就需要在命令行加上--target选项。

cjc hello.cj --target x86_64-unknown-windows-gnu

这样就可以得到Windows可执行程序了。 

Windows部署执行可执行文件

分发运行时库

在前面的博文华为仓颉语言生成的程序的分发部署-CSDN博客已经介绍了,要分发程序需要包括运行时库,Windows下需要libcangjie-runtime.dll和libsecurec.dll。这两个库文件在仓颉的Linux SDK中包括了。事实上,不单是这两个文件,仓颉的Linux SDK中包括了全部Windows所需要的运行库,在cangjie\runtime\lib\windows_x86_64_llvm目录下可以找到。看来官方是考虑到Linux用户有交叉编译需求的。

中文乱码问题

现在在Windows上执行代码会出现乱码的问题:

出现这个问题的原因是我们的代码使用的UTF-8字符集。要解决这个问题有下面几个办法。

CMD窗口下解决方案

如果使用的是CMD窗口,在窗口下执行如下语句:

chcp 65001

这个命令的意思是临时修改编码页面为UTF-8。使用这个命令之后显示就正常了。

PowerShell解决方案

如果是PowerShell,使用上面CHCP无效。需要使用下面的命令:

$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding

使用后显示中文正常。 

修改系统配置的解决方案

以上两个方法都只对当前窗口有效,如果想永久有效,可以修改系统配置,具体做法参考:【仓颉】控制台输出中文乱码,cmd和powershell的解决方案_仓颉控制输出乱码怎么办-CSDN博客

在程序中指定代码页的解决方案

也可以参考项目首页 - CangJie-Troubleshooting:常见问题解决办法 - GitCode的做法,在程序中加上对代码页的修改:

foreign func SetConsoleOutputCP(wCodePageID: UInt32): Boolmain(): Int64 {unsafe { SetConsoleOutputCP(65001) }println("你好,仓颉")return 0
}

Windows主机交叉编译Linux可执行文件存在的问题

不建议在Windows主机上编译Linux可执行文件,因为麻烦很多。

首先是缺少modules\linux_x86_64_llvm文件:

PS D:\Software\Cangjie\cangjie\bin> ./cjc --target=x86_64-unknown-linux-gnu .\hello.cj
error: failed to detect cangjie modules, reason: target library path is not exist : D:\Software\Cangjie\cangjie\bin\..\modules\linux_x86_64_llvm
1 error generated, 1 error printed.

这个目录可以从Linux SDK中找到。但是接下来还会遇到如下问题:

PS D:\Software\Cangjie\cangjie\bin> ./cjc --target=x86_64-unknown-linux-gnu .\hello.cj
error: not found `x86_64-linux-gnu-ar.exe` in search paths. You may add search path by `-B` option.

仓颉SDK实际上只提供了前端,它需要Windows下的Linux交叉编译工具链才能工作,由于嫌麻烦就放弃了。有兴趣的朋友可以继续探索。

结语

 今天分享了一些仓颉语言交叉编译的体会。由于刚刚上手仓颉语言,很多地方还不熟悉,欢迎朋友们批评指正。

http://www.dtcms.com/wzjs/347385.html

相关文章:

  • 徐州有哪些制作网站的公司网站快速排名
  • 柳州网站建设柳州深圳媒体网络推广有哪些
  • 山西省国贸网站建设互联网广告投放平台加盟
  • 中型电商网站维护费用网站排名优化制作
  • 可以做外链的网站平台银徽seo
  • 上海网站建设机构专业搜索引擎seo合作
  • 中国五大网站建设公司百度小说风云排行榜
  • 昆明微网站中国职业培训在线官方网站
  • 网站开发学什么语言seo优化培训
  • 一学一做短视频网站网站权重怎么提高
  • 山东省住房和城乡建设厅二级建造师宁波seo外包推广
  • 跑步机网站建设思维导图河南网站定制
  • 沁阳网站建设百度关键词优化多少钱一年
  • 怎样做旅游摄影网站郑州怎么优化网站排名靠前
  • 建筑工程网格化管理实施方案2024最新版seo搜索引擎优化方案
  • 安徽省建设厅网站 职称微商引流被加方法精准客源
  • 网站公司未来计划ppt怎么做广州软文推广公司
  • 做网站端口无法清除现在的seo1发布页在哪里
  • 公司网站内容更新该怎么做餐饮营销案例100例
  • 营销型网站建设 案例seo快速排名利器
  • 微信网站建设模板百度seo系统
  • 广州市 网站 建设济南做网站比较好的公司
  • 金融网站框架模板下载曼联目前积分榜
  • 厦门网站建设哪家厦门建设银行淘宝关键词查询工具哪个好
  • 网站建设营销公司搜索引擎营销实训报告
  • wordpress 163 smtpseo主要是指优化
  • 更适合企业网站建设的cms系统百度推广平台首页
  • 企业信用公示信息网seo查询 站长工具
  • linux网站建设收录批量查询
  • 门户网站建设百度收录提交网址