【发布时间】:2021-03-21 10:10:09
【问题描述】:
我正在尝试将 MinGW 编译器套件从 32 位迁移到 64 位。我的应用程序已经在 32 位 MinGW 下运行了好几年。我在 11 月下旬安装了 MinGW-w64。程序版本是 C:\wba\sd>gcc --version gcc(i686-posix-dwarf-rev0,由 MinGW-W64 项目构建)8.1.0 C:\wba\sd>ld --version GNU ld (GNU Binutils) 2.30
我的程序由一个小型控制台应用程序和一个小型 Windows 应用程序组成,并带有一个它们链接到的大型 dll。这些东西已经在我的 Windows XP Service Pack 3 笔记本电脑上运行了好几年。
由于过去遇到的问题,我使用静态链接到各种系统服务。相关的makefile东西是
CC = g++ -static-libgcc -static-libstdc++
libsdlib.a: sdlib.dll sdmain.o
sdlib.dll: sdmain.o
$(CC) -shared -o sdlib.dll -Wl,--out-implib,libsdlib.a sdmain.o
strip sdlib.dll
sdtty.exe: libsdlib.a sdlib.dll sdui-tty.o
$(CC) -mconsole -o $@ sdui-tty.o -L. -lsdlib
strip sdtty.exe
但是,如果程序无法访问 libwinpthread-1.dll,它现在会失败 当我准备编译时,它就在路径中。具体来说,它在 C:\Program Files\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin\libwinpthread-1.dll 但它不在客户的计算机上。我也有 C:\Program Files\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\i686-w64-mingw32\lib\libpthread.a 和 C:\Program Files\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\i686-w64-mingw32\lib\libpthread.dll.a 我尝试产生正确的咒语以将这种静态喜欢的内容放入我的程序中,但没有成功。 我对这一切有点生疏了。有人可以帮忙吗?
【问题讨论】:
-
您可能需要一个 -static-winpthread。我确实使用了这个编译器,但没有 libgcc 或 libstdc++。
标签: c++ mingw 64-bit static-libraries windows-xp-sp2