前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows平台安装nim

Windows平台安装nim

作者头像
刘銮奕
发布2020-12-30 16:10:33
3.6K0
发布2020-12-30 16:10:33
举报
文章被收录于专栏:奕知伴解奕知伴解

nim官方介绍

Nim是一种静态类型的编译系统编程语言。它结合了来自成熟语言(如Python,Ada和Modula)的成功概念。

高效的

  • Nim生成不依赖于虚拟机的本机无依赖可执行文件,这些可执行文件很小并且允许重新分配。
  • Nim编译器和生成的可执行文件支持所有主要平台,例如Windows,Linux,BSD和macOS。
  • 在C ++和Rust的启发下,Nim的内存管理是确定性的,并且可以使用析构函数和移动语义进行自定义。它非常适合嵌入式硬实时系统。
  • 诸如零开销的迭代器和用户定义函数的编译时评估之类的现代概念,与在堆栈上分配的基于值的数据类型的首选项相结合,导致了性能极高的代码。
  • 支持各种后端:它可以编译为C,C ++或JavaScript,因此Nim可用于所有后端和前端需求。

富有表现力的

  • Nim是独立的:编译器和标准库是在Nim中实现的。
  • Nim具有强大的宏系统,可以直接操纵AST,提供几乎无限的机会。

优雅

  • 宏无法更改Nim的语法,因为不需要它-语法足够灵活。
  • 具有本地类型推断,元组,泛型和和类型的现代类型系统。
  • 语句按缩进分组,但可以跨越多行。

byt3bl33d3r大佬对nim的介绍

  • Compiles directly to C, C++, Objective-C and Javascript.
  • Since it doesn't rely on a VM/runtime does not produce what I like to call "T H I C C malwarez" as supposed to other languages (e.g. Golang)
  • Python inspired syntax, allows rapid native payload creation & prototyping.
  • Has extremely mature FFI[1] (Foreign Function Interface) capabilities.
  • Avoids making you actually write in C/C++ and subsequently avoids introducing a lot of security issues into your software.
  • Super easy cross compilation to Windows from *nix/MacOS, only requires you to install the mingw toolchain and passing a single flag to the nim compiler.
  • The Nim compiler and the generated executables support all major platforms like Windows, Linux, BSD and macOS. Can even compile to Nintendo switch , IOS & Android. See the cross-compilation section in the Nim compiler usage guide[2]
  • You could technically write your implant and c2 backend both in Nim as you can compile your code directly to Javascript. Even has some initial support for WebAssembly's[3]

下面引用红队学院Moriarty大佬 对Nim的看法:

有没有必要学nim ? nim 跟rust 一样,都属于小众语言。 它的语法集python、lisp(主要是宏)、Ada之长于一身(可能对于习惯了C系语法的人来说有点不适应)。它其实更像是个“中间翻译”语言:它把自身的语法翻译成C/C++的,然后再借助C编译器(mingw)完成编译链接。这个过程可以通过在nim命令行中添加“—nimcache”来查看。所以它编译后的可执行文件的运行效率和体积都与直接用C/C++生成的文件不相上下。再加上它从语法层面上实现了复杂的数据结构和高级特性,因此从开发效率上讲,它要更优一点。它又因为“中间翻译”的特点,可以与C/C++无缝混编,对程序生成可以达到更底层的控制。 从红队角度来讲,由于它实现了自己的GC,所以在生成的可执行文件中增加了不少自己的东西(这就是为什么它生成的文件要比C/C++大一点),以及它强制动态获取dll中的导出函数等特点,使得它生成的程序先天具备一定的静态ABU的能力。 列举了这么多优点,那么它到底适合什么人学习呢? 首先,如果你只有python 等脚本语言的开发经验,而又不想先过多的花时间在C/C++的入门学习上就能快速融入到类C2项目的开发中,那么nim是你的首选。当然,后期你还是要精通C(以nim为主要开发语言的话,c++可以跳过,或者只简单熟悉下语法便可)。 另外,nim的学习成本要比C++低很多,所以如果你和我一样对C++有意见的话,就可以把C/C++变成C/Nim。

Window平台准备nim环境

对于windows安装可参考官方手册: use the installer on the official website[4]

下载适合自己电脑平台的zip文件包,进行解压。

编译器依赖性

Nim编译器需要C编译器才能编译软件。zip文件包含一个名为的简单应用程序finish.exe,您可以finish.exe用来安装MingW。由于国内网络问题,我不推荐使用在线方式下载方式,建议离线方式提前下载并解压,配置环境变量。

已知以下版本的MingW可以与最新版本的Nim一起使用。

  • 32位-mingw32.7z[5]
  • 64位-mingw64.7z[6]

打开CMD窗口执行g++、gcc,验证C编译器环境设置正确。

配置PATH环境变量

zip文件中的二进制文件位于bin目录内。Nim开发人员通常在其[PATH环境变量中](https://en.wikipedia.org/wiki/PATH_(variable "PATH环境变量中"))包含两个目录 :

  • 上述bin目录
  • %USERPROFILE%\.nimble\bin%USERPROFILE%主目录)

如果不清楚%USERPROFILE%在哪里可以使用zip文件包含一个名为的简单应用程序finish.exe帮你完成配置。根据提示进行输入:

如果 你想使用nim编写包含Windows API内容,还需要下载和安装Winim[7]。下面提供带有git环境和不带有git环境的安装方式:

With git on windows:

代码语言:javascript
复制
nimble install winim

Without git:

代码语言:javascript
复制
1. Download and unzip this moudle (by click "Clone or download" button).
2. Start a console, change current dir to the folder which include "winim.nimble" file.
   (for example: C:\winim-master\winim-master>)
3. Run "nimble install"

至此环境准备完毕。

参考资料

[1]

FFI: https://nim-lang.org/docs/manual.html#foreign-function-interface

[2]

Nim compiler usage guide: https://nim-lang.github.io/Nim/nimc.html#crossminuscompilation

[3]

initial support for WebAssembly's: https://forum.nim-lang.org/t/4779

[4]

use the installer on the official website: https://nim-lang.org/install_windows.html

[5]

-mingw32.7z: https://nim-lang.org/download/mingw32.7z

[6]

-mingw64.7z: https://nim-lang.org/download/mingw64.7z

[7]

Winim: https://github.com/khchen/winim

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奕知伴解 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • nim官方介绍
  • Window平台准备nim环境
    • 编译器依赖性
      • 配置PATH环境变量
      • 参考资料
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档