x86 – 如何在Windows上解决GHC错误“Unknown PEi386 section na
我最近发现在
Windows上编译HDBC-postgresql的
instructions I had written不再使用Haskell Platform 2012.2.0.0.该库构建正常,但在尝试链接构??建的库时,cabal失败:
Loading package HDBC-postgresql-2.3.2.1 ... ghc.exe: Unknown PEi386 section name `.idata$4' (while processing: C:/PROGRA~1/POSTGR~1/9.2/liblibpq.a) ghc.exe: panic! (the 'impossible' happened) (GHC version 7.4.1 for i386-unknown-mingw32): loadArchive "C:/PROGRA~1/POSTGR~1/9.2/liblibpq.a": failed 我尝试用dlltool –no-idata4 –no-idata5重新制作libpq.a,但随后错误信息改为Unknown PEi386部分名称`.idata $7′. 这似乎是GHC bug 7103. 根据PE and COFF Specification,美元符号在包含在部分名称中时具有特殊含义,表示“分组部分”.链接器应该丢弃“$”及其后面的所有字符以创建合并的.idata节,其中“$”后面的字符用于确定对合并节的贡献顺序. 有没有办法强制dlltool不输出分组部分? 或者,有没有办法获取GNU存档(A文件),合并所有分组的部分,并输出生成的合并导入库(implib)? 编辑:Haskell Platform 2012.4.0.0发生了同样的错误. EDIT2在查看the source code of 出于赏金和这个问题的目的,我将其更改为:如何在给定模块定义(DEF)文件的情况下构造单个.idata部分. 解决方法
是的,但这只是Microsoft链接器的默认行为.我在你的工具链上没有足够的速度,所以只是一些提示. gcc链接器需要显式配置将各种.idata $x节合并为单个.idata节.这是由SECTION指令完成的.在看似由脚本完成的mingw中,可以使用样本here.请注意脚本的这一部分: .idata BLOCK(__section_alignment__) : { /* This cannot currently be handled with grouped sections. See pe.em:sort_sections. */ SORT(*)(.idata$2) SORT(*)(.idata$3) /* These zeroes mark the end of the import list. */ LONG (0); LONG (0); LONG (0); LONG (0); LONG (0); SORT(*)(.idata$4) __IAT_start__ = .; SORT(*)(.idata$5) __IAT_end__ = .; SORT(*)(.idata$6) SORT(*)(.idata$7) } 相当不可思议,但鞋子适合.确保链接器使用此类脚本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows10 配置JAVA环境变量方法
- AutoHotKey:模拟Windows键
- 套接字 – 如何加速缓慢/滞后的Windows Phone 7(WP7)TCP套接
- win10 vscode使用 智能提示
- 按钮悬停时XAML Windows 8应用程序蓝色边框
- windows-server-2003 – 如何获得创建全文索引的权限?
- 使用MSI使用我的应用程序安装.NET Framework
- windows-server-2008 – Windows平台过滤 – 阻止合法数据包
- windows – 为什么`cmd / k`和`cmd / c`记住已经完成的cmd子
- exception – 在Windows事件查看器中诊断CLR错误
- Windows 下配置 Logstash 为后台服务
- saltstack在windows客户端远程执行脚本提示路径不
- 编译Windows Embedded Compact 7的升级库
- 有没有快速的方法来查看Windows 2008上加载了哪些
- 用于列出Windows Active Directory组中用户的命令
- windows – 如何使用Powershell创建Run As Admin
- windows-8 – 在Windows 8应用程序中为Dispatche
- windows – Cmd和感叹号 – 第二部分
- windows-installer – 你能强迫MSI永远是管理员吗
- Windows常用的网络命令