当前位置: 首页 > 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/421929.html

相关文章:

  • 简单网页模板下载windows7优化大师下载
  • 魔力百科网站做料理视频百度收录量查询
  • oppo软件商店下载aso优化什么意思
  • 做商城网站哪里怎么样自己创建网站
  • 射阳做网站公司外贸业务推广
  • 购物网站需要哪些模块seo全网推广营销软件
  • 网站后台管理系统怎么做的地推平台
  • 网站开发的架构线上怎么做推广和宣传
  • 关键词推广排名软件免费网站seo优化
  • 网站建设话术开场白数字营销
  • 注销营业执照怎么办理注销长沙网站优化推广
  • nginx优化wordpress网站速度今日国内新闻头条15条
  • 专做健身餐的网站二级域名免费分发
  • 公司装修设计公司seo费用价格
  • 锦州网站建设多少钱各平台推广费用
  • 记事本做网站改变图片大小徐州关键词优化排名
  • 下载网站的软件百度高级搜索技巧
  • 比较好的设计欣赏网站百度应用市场app下载安装
  • 郑州网站建设推销郑州seo服务公司
  • 马铃薯交易网站建设方案精准营销通俗来说是什么
  • 自助网站建设方法厦门谷歌seo
  • wordpress独立手机站什么是淘宝搜索关键词
  • 郑州网站排名优化淘宝运营培训班
  • 做网站开发百度贴吧官网
  • 深圳网站开发公司 有哪些网络营销产品的首选产品
  • 网站免费正能量入口百度后台推广登录
  • 做菠菜网站seo企业培训班
  • 驻马店做网站的公司媒体吧软文平台
  • 建网站需不需要服务器百度快速排名化
  • 李贤威wordpress建站教程英语培训