【问题标题】:Problem making MinGW-64-compiled program self-contained in Windows XP在 Windows XP 中使 MinGW-64 编译的程序自包含时出现问题
【发布时间】: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


【解决方案1】:

同时添加-static 以链接静态库。

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多