问题 在MinGW 4.7.1上与-static-libstdc ++标志链接[关闭]


我尝试在MinGW 4.7.1上编译(Allegro 5)
(在Win 7上使用Code :: Blocks 12.11)
带编译器标志
(在Project :: Linker设置中编写::其他链接器设置):

-static-libgcc中
  -static-的libstdc ++

结果:

无法识别的命令行选项'-static-libstdc ++'

怎么解决?


13073
2018-01-08 22:24


起源

废话,第三个网站没有帮助...... - topright gamedev
编译游戏引擎是一个编程问题。没有? - topright gamedev
关于超级用户的问题: superuser.com/questions/530165/... - topright gamedev
stackoverflow.com上有很多这样的问题,请参阅相关内容。 - topright gamedev
这肯定不是偏离主题的恕我直言。我认为C ++编译器给出的代码编译问题/错误是关于主题的。 - Victor Stafusa


答案:


是什么 g++ --version 说?我不知道确切的版本 什么时候介绍,但是 -static-libstdc++ 是公平的 最近的补充。以前,你必须做类似的事情 -static -lstdc++ -dynamic。 (如果编译器版本是4.7.1,那么 应该不是问题,但我不知道MinGW版本如何映射 到实际的编译器版本。)


9
2018-01-08 23:10



哇,它说4.6.2。我确定它是4.7.1。因为在分配中有mingw32-gcc-4.7.1.exe。 - topright gamedev
在分配中还有一个目录gcc \ mingw32 \ 4.7.1。多么混乱。 - topright gamedev
@toprightgamedev IIRC(自从我安装了MingW已经有一段时间了 - 我现在的PC是Linux),你可以在下载页面上选择几个版本。但在这方面,最可靠的说法是什么 g++ --version 说,因为它是编译进来的。但正如另一张海报所说:找到图书馆所在的位置,看看是否有 libstdc++.a 当下。如果没有,请下载一个。并确保它在同一目录中;如果g ++找到了 libstdc++.so 在较早的目录中,它不会再看了。 - James Kanze
我已经设置了明确的路径 libstdc++.a 并使用唯一的“其他链接器选项”进行编译: -static-libgcc。它说: undefined reference to _Unwind_Resume'`和 undefined reference to __gxx_personality_v0'` - topright gamedev


我没有测试但是试图分开 -static -libstdc++


1
2018-01-08 22:31



“找不到-libstdc ++” - topright gamedev
在MinGW / lib / gcc / mingw32中有libstdc ++。a - topright gamedev
@toprightgamedev这是一个很好的问题。如果没有静态库,则g ++无法与其链接。 (如果没有,那就有点傻了,因为我想不出你想要动态链接c ++标准库的任何情况) - James Kanze
是的,MinGW 4.7.1(与Code :: Blocks 12.11一起安装)只有libstdc ++。a(搜索者 libstdc) - topright gamedev
我想在Code :: Blocks论坛上询问它,但仍在等待管理员的注册批准......:] - topright gamedev


以下链接可以帮助您。它解释了如何在c ++中链接静态库 http://www.trilithium.com/johan/2005/06/static-libstdc/


1
2018-01-08 22:46