首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Windows上编译haskell程序时,GCC没有工作

在Windows上编译Haskell程序时,GCC没有工作。Haskell是一种函数式编程语言,它的编译器通常使用GHC(Glasgow Haskell Compiler)来将Haskell代码编译成可执行的机器码。在Windows上,GHC默认使用MinGW作为GCC的实现来进行编译。

如果在编译Haskell程序时遇到GCC没有工作的问题,可能是由于以下原因:

  1. 缺少GCC:首先需要确保系统中已经安装了MinGW或者其他兼容的GCC实现。可以通过访问MinGW官方网站下载并安装MinGW。
  2. 环境变量配置:安装完MinGW后,需要将MinGW的安装路径添加到系统的环境变量中。具体步骤是:打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 环境变量。在系统变量中找到"Path"变量,点击编辑,然后在变量值中添加MinGW的安装路径。
  3. GHC配置:GHC在编译Haskell程序时会调用GCC,因此需要确保GHC能够正确找到GCC的路径。可以通过在命令行中执行"ghc --info"命令查看GHC的配置信息,其中会包含GCC的路径。如果GCC的路径不正确,可以通过编辑GHC的配置文件进行修改。GHC的配置文件通常位于用户目录下的".ghc"文件夹中。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

编译原理基础

GCC发布后很快地得到扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Objective-C、Java、Ada,Go与其他语言。...简单来说,gcc 指的是 GCC 中的 GNU C Compiler(C 编译器);g++ 是 G++ 中的 GNU C++ Compiler(C++ 编译器),但实际 gcc 和 g++ 都不是编译器...MinGW是什么 参考 MinGW 维基百科 MinGW(Minimalist GNU for Windows),又称 mingw32,是将 GCC 编译器和 GNU Binutils 移植到 Win32...MinGW是从Cygwin(1.3.3版)基础发展而来。 GCC 支持的语言大多在 MinGW 也受支持,其中涵盖 C、C++、Objective-C、Fortran 及 Ada。...GNU工具链是什么 GNU工具链(英语:GNU toolchain)是一个包含了由 GNU 计划所产生的各种编程工具的集合,其组成包括我们非常熟悉的 GCC 编译器,由自由软件基金会负责维护工作

88210

MinGW 安装教程

它实际是将经典的开源 C语言 编译GCC 移植到了 Windows 平台下,并且包含了 Win32API 和 MSYS,因此可以将源代码编译生成 Windows 下的可执行程序,又能如同在 Linux...除此之外,编译复杂的程序时,还需要你会编写 Makefile ,否则只能一个文件一个文件的编译,可想而知会多么辛苦。...当然如果您是 Linux 下工作,那么Code::Blocks可能是一个选择,不过最大的可能是您必须习惯使用 GCC编译程序。...因为 MinGW 本来就是将 GCC 移植到 Windows 的产物,所以操作方式和 GCC 一样,只是 Linux 下命令是被键入到“终端”中,而 Windows 下则是被键入到“命令提示符”里。...如果代码没有明显的编译错误,运行时也没有逻辑错误,则在最终编译为可发布版的程序时,我们还要考虑编译优化的问题,以便生成的程序文件拥有更小的体积,和更高的运行效率。

1.6K10
  • ​hostguest nativelangsys及uniform cui cross compile system

    所以就有二个OS间处理统一编译的需求,这就是cross compile和统一cui套件的需求。。...IDE平台,server core as guest负责运行就可以,但是现实的情况却是:host2guest大都没有支持,比如windows 2 linux的mingw64实现往往没有反过来丰富。...准备windows的简单cross compile toolchain环境 ----- 一般我是不倾向自己编译的,不说了,先下载http://repo.msys2.org/distrib/i686/msys2...但是我发现g++编译序时老出hidden sysbols with DSO etc..之类的错误就放弃了,因为这似乎是个巨大的坑。下回有时间自己编译了再说。...准备windows的msys2+cmake+cross compile toolchain环境 ----- 在编译复杂的程序时,需要专门的cmake工具它名字中的C就是cross compile,cmake

    64430

    MinGW安装教程

    它实际是将经典的开源 C语言 编译GCC 移植到了 Windows 平台下,并且包含了 Win32API 和 MSYS,因此可以将源代码编译生成 Windows 下的可执行程序,又能如同在 Linux...除此之外,编译复杂的程序时,还需要你会编写 Makefile ,否则只能一个文件一个文件的编译,可想而知会多么辛苦。...当然如果您是 Linux 下工作,那么Code::Blocks可能是一个选择,不过最大的可能是您必须习惯使用 GCC编译程序。...因为 MinGW 本来就是将 GCC 移植到 Windows 的产物,所以操作方式和 GCC 一样,只是 Linux 下命令是被键入到“终端”中,而 Windows 下则是被键入到“命令提示符”里。...如果代码没有明显的编译错误,运行时也没有逻辑错误,则在最终编译为可发布版的程序时,我们还要考虑编译优化的问题,以便生成的程序文件拥有更小的体积,和更高的运行效率。

    3.6K10

    关于编译的重要概念总结

    如果脑海中没有一个整体的概念框架的话,正如那张图,一个全副武装的骑士,虽然防护的很好,但是对于编译器的基础知识掌握的不牢,就像头盔的一个缝隙,可能下一箭正中缝隙,败下阵来。...这时 Linus 为了 PC 运行 Unix, Minix 的启发下,开发了Linux。当然 Linux 只是一个系统内核,系统启动之后使用的仍然是 gcc 和 bash 等软件。...将函数库中相应的代码组合到目标文件中,汇编文件和系统库文件链接起来,生成特定平台可执行的程序。 最早的操作系统中,是没有链接器的,由加载器loader进行工作,所以ld的命名由此而来。...它实际是将经典的开源 C语言 编译GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。...而且Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作

    95420

    MinGW安装教程——著名CC++编译GCCWindows版本

    它实际是将经典的开源 C语言 编译GCC 移植到了 Windows 平台下,并且包含了 Win32API 和 MSYS,因此可以将源代码编译生成 Windows 下的可执行程序,又能如同在 Linux...除此之外,编译复杂的程序时,还需要你会编写 Makefile ,否则只能一个文件一个文件的编译,可想而知会多么辛苦。...当然如果您是 Linux 下工作,那么Code::Blocks可能是一个选择,不过最大的可能是您必须习惯使用 GCC编译程序。...因为 MinGW 本来就是将 GCC 移植到 Windows 的产物,所以操作方式和 GCC 一样,只是 Linux 下命令是被键入到“终端”中,而 Windows 下则是被键入到“命令提示符”里。...如果代码没有明显的编译错误,运行时也没有逻辑错误,则在最终编译为可发布版的程序时,我们还要考虑编译优化的问题,以便生成的程序文件拥有更小的体积,和更高的运行效率。

    23.6K33

    GCC 编译器的使用

    Windows 下进行开发时,只需要点几个按钮即可编译,集成开发环境(比如 Visual studio)已经将各种编译工具的使用封装好了。...编译序时,加上-v 选项就可以看到这几个步骤。...\n"); 04 } 05 ARM 版本的编译工具与 gcc、ld 等工具的使用方法相似,很多选项是一样的。本节使用 gcc、ld 等工具进行编译、链接,这样可以 PC 直接看到运行结果。...libsub.so sub.o 以后要使用 sub.c 中的函数 sub_fun 时,链接程序时,指定引脚 libsub.so 即可,比如: $ gcc -o test main.o -lsub -L...如果这里没有找到,就在上面提到的两个标准前缀中寻找,仅此而已。如果上述方法没有找到这个文件,就不链接它了。多数情况的多数机器,’libgcc.a’并非必不可少。

    3.8K31

    关于 Python这十大特色你们了解多少呢?

    你可以 GNU/Linux、Windows、FreeBSD、Macintosh、 Solaris、 OS/2、 Amiga、 AROS、 AS/400、 BeOS、 OS/390、 z/OS、 Palm...在你使用诸如 C 或 C++ 等编译语言编写程序时,需要将这些语言的源代码通过编译程序配合 其中不同的标记(Flags)与选项,来将它们转换成你的电脑所使用的语言(例如 0 与 1 构成 的二进制码)。...当你运行这些程序时,链接程序或载入程序将会从硬盘中将程序拷贝至内存 中并将其运行。 另一方面,Python 不需要将其编译成二进制码。你只需要直接从源代码 运行 该程序。... 序内部,Python 会将源代码转换为称为字节码的中间形式,尔后再转换成你的电脑所使用的 语言,并运行它。...实际,这一流程使得 Python 更加易于使用,你不必再担心该如何编译 序,或如何保证适当的库被正确的链接并加载等等步骤。

    71120

    老牌CC++ IDE——DEV C++有新的大版本了

    大意如下: 是一个全新的,由Embarcadero赞助的c++开发IDE,集成MINGW(gcc编译器,同时也可以绑定cygwin和其他基于gcc编译器。...软件使用Delphi开发,性能优越,是windows下的原生应用开发,因此并行编译和多线程编译都有得到发挥,因此,启动速度和编译速度应该是比较快的,至少比codeblocks快,更新频率也比codeblocks...特点 优化改进代码补全提示功能 输入回车时检查语法错误,并在错误处用波浪线标记 用户编辑界面增强和改进 重新设计并改进调试功能 改进结构浏览器 自动链接功能:可以根据用户代码中包含的头文件决定编译时链接哪些库文件...这样可以减少调试程序时反复输入数据的麻烦 集成EGE绘图库和海龟作图库及其项目模板,以提升初学者的学习兴趣 支持打开、编辑和编译UTF-8编码的源代码文件。 增加 重构->符号重命名 功能。...6.3-beta2版本开始改为mingw-w64 gcc 10.2) 兼容Windows XP/Windows 7/Windows 10 支持Windows 7/Windows 10高DPI(需要设置,

    2.8K20

    【Linux】软硬链接和动静态库

    硬链接是一个与原始文件共享inode的文件,它们文件系统中实际是同一个文件。 每个文件Linux系统中都有一个inode,它包含了文件的所有元数据信息,如权限、所有者等,但不包含文件名。...总结起来,软连接有独立的inode,软连接内容保存的是目标文件的路径,当原始文件删除后,软链接将会失效;例如windows的快捷方式。...可以确保程序总是使用特定版本的库,避免了所谓的“DLL地狱”问题(Windows环境中常见,指的是由于不同应用程序可能依赖于不同版本的同一个库而导致的问题)。...库更新时不需要重新编译或重新链接应用程序,只需替换库文件即可(前提是API没有改变)。 缺点: 程序运行时需要有相应的动态库存在,否则可能会导致程序无法启动。...gcc查动静态库时不会在当前目录下查,所以我们需要指定路径 注意链接动态库形成可执行程序后,运行可执行文件时,系统是需要找到动态库的位置,也就是运行可执行程序时,动态库是需要加载的,所以如何让系统找到动态库

    11010

    为什么 Haskell 是我们构建生产软件系统的首选

    从这个意义讲,纯度意味着我们编写的代码是纯净的,或者说没有副作用。...仅当这类纯函数没有副作用(例如在主机系统创建文件、运行数据库查询或发出 HTTP 请求)时这才能做得到。Haskell 的类型系统就具有这种纯度。... Haskell 中开发应用程序时,我们通常只一个窗格中打开一个带有文本编辑器的终端,然后另一个窗格中打开 ghcid。...Haskell 的类型系统没有上述问题。类型系统是这个语言的自带特性,编译器始终会验证类型是否正确。...我们从事过的许多项目我们做了很多工作,包括实现了作为服务于一个 HTTP API 的同一可执行文件的一部分运行的 websocket 服务器,还创建了一个多线程 worker 系统,其所需的开销远低于管理单个

    1.4K10

    一文看尽C++ 过去的这一年

    标准库还有更多的工作需要完成,特别是针对并行算法和文件系统等重要问题的工作。...下一次会议将于2020年2月布拉格举行。 二月: 夏威夷科纳会议 在这次会议,下列C++新特性投票后被批准纳入了C++20标准: 模块 - P1103! 协 - N4736!...AddressSanitizer支持 Windows 使用 MSVC 编译的项目 和CMake更好的集成。...PVS-Studio:这是一个使用C、C++和C#编写的,用于程序源代码中进行错误检测的工具。Windows和Linux环境下都能够工作。...如果你没有参加过任何一个会议,你可以YouTube快速输入它的名字,就会从中找到大部分演讲的视频,这很令人惊讶。你也可以使用一些网络搜索引擎很容易地找到相关会议报告。

    3.4K10

    免杀技术-使用纤免杀

    spm_id_from=333.999.0.0&vd_source=4652172a15b97e23a4fc522adb2ef705 使用纤免杀 纤Fiber的概念:纤是比线程的更小的一个运行单位...可以把一个线程拆分成多个纤,然后通过人工转换纤,从而让各个纤工作。线程的实现通过Windows内核完成的,因此Windows可以自动对线程进行调度。...但是纤是通过用户模式的代码来实现的,是程序员自己写的算法,内核不知道纤的实现方式,而是你自己定义的调度算法,因此纤是“非抢占”的调度方式 https://docs.microsoft.com/en-us...010editor中 3、tools – binaryxor 选择异或次数 4、生成之后,全选 edit – copy as c code,填入到上面的实现代码中,异或次数按照刚刚设置的进行修改 5、gcc...xc2.c -mwindows编译生成exe 免杀效果:火绒✔ def✔ eset✔ 360✔(需要迅速注入其他进程)卡巴斯基❌ 反模拟运行检测 本质就是将恶意程序放入沙箱中 看看它会做什么并监视它的行为

    2.1K20

    ​随笔 | 写代码时极有可能面临的焦虑

    写代码的优点大概也是其缺点 仅仅从工作内容看,我觉得有两点是『写代码』这三个字概括的工作很吸引我的: •说一不二,确定性•需要不断学习新技术 说一不二,确定性 我们写出一个1+1的程序,则得到的结果一定是...当我写出一个1+1的程序时,得到的结果是3或者得不到结果,我就会很迷茫,进而只能根据自己有限的知识与检索能力逐一进行排查: •程序语法有错误吗?通常不会有,否则编译时会报错;•程序逻辑有错误吗?...我面临的问题是,我无法 windows 10 平台上编译并使用 gecode ,而让我感到焦虑的是:我之前已经 linux 上成功编译运行了 gecode 的实例,并且 windows 10 我都是按照...gecode 的编译说明书配置的: •我首先尝试用 gcc/g++ 编译,失败,调用 sh 脚本时,显示 OS 不适配,那我只能更换平台•于是改用 Cygwin gcc/g++ ,在编译时也报错...令我焦虑的是,我没有扎扎实实学完技术,而是直接上手做。 比如,gecode 自己有一套逻辑体系,而这个体系并没有我的脑海里成型。

    84320

    大名鼎鼎的 Linux —— 进程,线程,协

    ELF 文件也是一种可执行文件,其中也包含二进制内容,除此之外还有一些其他的信息 gcc 编译后的为 ELF 文件 go 编译后的二进制文件 解释器 解释器是一种直接执行高级语言代码的计算机程序..., 而无需将代码编译成机器码 优点: 消除了编译整个程序的负担,程序可以拆分成多个部分来模块化 缺点: 解释器像是一位“中间人”,每次运行程序时都要先将代码转成另一种语言的代码,然后再作运行,因此解释器的程序运行速度比较缓慢...看了上面你肯定知道 B 语言也是更低级的语言,其实编译器和编程语言的诞生,都是按照上面的逻辑 最后,上文使用的 gcc 编译器不是通过汇编写的,也不是通过 B 语言写的,而是通过 C/C++ 写的(当今时代的...这样对于操作系统而言,这个程序实际只阻塞了一次 协调度 上面说到 IO 阻塞的时候,会进行协切换。那如何知道当前的 IO 是阻塞的呢? 答案就是之前写到的一篇文章——IO多路复用。...io函数,当这些异步函数返回 busy 或 bloking 时,golang 利用这个时机将现有的执行序列压栈,让线程去拉另外一个协的代码来执行,并且 golang 的协是多线程的 协调度器 实际

    72900

    Effective Debugging-高效调试

    5.预发(发生故障)和测试系统(正常运行)寻找差别 #对每一行进行裁切从第四个字段开始显示 cut -d ' ' -f 4- file.log 系统之间对比,找出行为的区别,将所有可能的因素都要考虑到...7.使用构建tool不同环境下执行 特别是C/C++开发环境下,对操作系统编译器的支持都需要在不同环境执行看一下程序结果。注意字节、内存对齐等问题。...2.对Ada,C,C++,Object-c等程序需要通过LLVM和GCC这两种编译器执行。 3.java应用同时使用openjdk。 4.开发Ruby程序时,多尝试其他VM。...5.当你使用了较为低级语言完成了一个算法时,发现无法运作可以使用Python,R,Haskell,shell等高级语言重新实现它并反复对比。...2.给调试工作流出足够的时间,学习工具、技术和方法。 3.安排好自己的工作环境,让自己沉侵其中不受干扰。 4.遇到难题没有思路时,建议放松一下听一下music或者睡一觉。

    73490

    使用vs2019进行Linux远程开发的方法步骤

    通常,当我们开发Linux程序时有两种方案: Linux直接编写程序并进行运行测试和调试 Windows或Mac OS X借助工具进行远程开发 虽然我自己是Linux环境直接进行开发的,但也有许多的人是...Windows环境从事开发工作的,如果离开自己熟悉的系统到陌生的环境也许会影响到工作效率。...我们开始之前,首先要做点准备工作: 安装好vs2019,且勾选了c++ for Linux功能; 准备一个可用的Linux远程环境,例如配置了静态IP的Linux虚拟机,并且已经安装好了GCC工具链以及...使用数学函数和第三方库 Linux使用标准库提供的数学函数也是一个老生常谈的问题,根据你使用cpp还是c会有如下几个情况: 使用cpp时,libstdc++依赖于libm,所以使用g++编译你的程序时会自动链接数学函数库...Windows我们通常指定好附加包含目录和附加库目录即可正常编译,但是Linux必须明确指定链接库的名字,因此我们项目属性中进行设置。

    4.3K40

    【C语言】第一回(源(.c)文件怎么生成可执程序(.exe)文件)

    C语⾔代码是放在 .c 为后缀的⽂件中的,要得到最终运⾏的可执⾏程序,中间要经过编译和链接2个过程。 ⼀个⼯⼀般都会有多个源⽂件组成,如下图所⽰,演⽰了源程序经过编译器和链接器处理的过程。...注: 每个源⽂件(.c)单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件) 多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件) 这就是,Windows电脑C语⾔程序⽣成的...VS2022 集成了MSVC(安装报包较⼤⼀些,安装简单,⽆需多余配置,使⽤起来⾮常⽅便) •XCode 集成了clang(苹果电脑的开发⼯具) •CodeBlocks 集成了gcc(这个⼯具⽐较...四、VS项⽬和源⽂件、头⽂件介绍 VS写代码,我们是需要创建项⽬的,直接新建项⽬就可以了。 项⽬中就可以添加源⽂件和头⽂件。...VS2022运⾏代码的快捷键: Ctrl+f5

    15510

    c和fortran混编

    如果是gcc -o sample main.c foo.c那么因为后缀名为.c所以会先编译,又因为没有-c选项所以会再链接。...就好像gcc默认会链接c库一样,g77默认会链接 fortran的一些基本的,标准的库;另一个办法就是查明g77会链接哪些基本的,标准的fortran库,这也很简单在编译链接fortran程序时 加上-...但是为了简单安全方便,还是建议直接用相应的编译器完成链接工作(比如 fortran就用g77),因为它们的链接顺序已经理好了(并且它们除了链接自己的库还链接c库,而gcc只链接c库,所以用它们不用担心链不到...此例中事实实际的编译器是f77,我机器没有f90。...这是编译器(f77)的一个命名规则,没有为什么,它就是把你fortran中的函数名字全转换成小写,然后最后加一个下划线。我昨天搜了很多版本,头昏脑胀,怎么调都说找不到,也没有想到要自己看看。

    1.6K41

    我写了一本书,《深入理解 Kotlin 协

    还是一个雏形,直到我去年重制Kotlin从入门到精通和编写 《深入理解 Kotlin 协》 时,才为它添加了作用域、取消支持等功能,并进一步的完善很多细节的设计。...开发者群体如果从一开始就在这个小圈子内成长的话,确实没有什么机会接触到协。...这本书主要回答了以下几个常见的问题: 协是什么?Kotlin 协又是什么? Kotlin 协工作机制是怎样的? 如何将 Kotlin 协投入生产实践当中?...其中,使用 VSCode 处理文字内容;使用 Pandoc 将 md 文件编译成 docx 文件;使用后面的四个工具来绘制插图 —— 它们实际是将源码编译成图片的处理工具。 ?...除了使用 Haskell 编写的 Pandoc 的插件 cross-ref 我实在无法快速上手以外,我学习到了如何使用 Python 和 Lua 编写用来在编译过程中处理图片生成逻辑和文字预处理的 Pandoc

    1.3K10
    领券