0

我正在尝试将 MinGW 编译器套件从 32 位迁移到 64。我的应用程序已经在 32 位 MinGW 下运行了好几年。我在 11 月下旬安装了 MinGW-w64。程序版本为 C:\wba\sd>gcc --version gcc (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0 C:\wba\sd>ld --version GNU ld (GNU二进制实用程序)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 我尝试产生正确的咒语以使这个静态喜欢进入我的程序,但没有成功。我对这一切有点生疏了。任何人都可以帮忙吗?

4

1 回答 1

0

还要添加-static与静态库的链接。

于 2020-12-10T20:09:15.073 回答