在Windows 7 64bit中,我使用MinGW-w64(来自MinGW-build项目,由NiXman提供).具体来说,我正在使用x64-4.8.0-release-win32-sjlj-rev2.7z.x64 =开发机器.Win32 =线程模型.这可以编译32位和64位目标.
当我编译并清空cpp文件时只有一个简单的cp main和一个printf行说你好...我是否将它编译为32位或64位之间存在不一致.
g++ -m32 test.cpp依赖关系是:
g++ -m64 test.cpp依赖关系只是:
在64位模式下编译时,我不明白LIBGCC_S_SJLJ-1与LIBSTDC++-6依赖项有什么关系.64位C++编译不需要这两件事吗?或者它们是否自动静态链接?
如果他们自动链接到一个而不是另一个,这是什么原因?
我知道我可以用and LIBGCC和LIBSTDC++静态链接32位项目.虽然我不确定这是不是很好的做法. -static-libgcc-static-libstdc++
我尝试过-shared-libgcc,-shared-libstdc++以便我的64位编译具有动态依赖性LIBGCC,LIBSTDC++但是当使用–m64标志(编译为64位)时,g ++拒绝动态链接它们.
我已经读过静态链接LIBGCC,这LIBSTDC++是一件坏事,并且它会阻止人们安全地链接到其他第三方动态库中,因为某些东西(我并不真正理解这个说法).
如果有人能够阐明g ++行为的这种差异以及这方面的最佳实践,我将非常感激.
阅读此http://sourceforge.net/apps/trac/mingw-w64/wiki/Native%20Win64%20compiler向我建议,本机编译器是使用 --disable-shared 标志构建的,并且依赖项静态链接到您的应用。它们当然是必需的。
处理异常需要LIBGCC_S_SJLJ-1.DLL,LIBSTDC++-6.DLL是C++标准库。
我不清楚为什么会有 32/64 的差异。可能是因为后端是使用不同的标志生成的。
我没有看到静态链接这些依赖项的真正问题,事实上,这个决定是针对 64 位做出的。对于 32 位我也会做同样的事情。
| 归档时间: |
|
| 查看次数: |
855 次 |
| 最近记录: |