静态链接的 Linux lib 可以转换为 COFF 并由 MinGW 链接,以便在 Linux 系统上运行吗?

问题描述 投票:0回答:0

我有一个 Windows 应用程序的源代码。它在 MinGW 下编译,与 wine 链接良好,并在 Linux 系统上执行。

但是,我希望它调用 Linux 库。

由于Linux lib是静态链接的,我想我可以把它转换成COFF格式,并且它可以在wine下正确执行。我什至可以对 Linux-lib 源代码进行一定程度的更改以适应这一点,尽管真正将其移植到 win32 是不可能的。

我尝试将它转换为 COFF32(它已经是一个 32 位的库,Windows 项目也是 32 位的)。然而,objconv 似乎无法转换它。谁能帮我理解转换错误? (恐怕我无法提供源代码,因为它是专有的。)

~objconv -fCOFF32 -xs _build/Common/libcommon.a bin/common.lib~

~错误2037:不支持符号存储/绑定类型10~

编辑:我已经得到了要转换的对象。但是,wine 现在无法加载可执行文件。 :(

gcc  -o "${CommonObj}" -m32 -march=i386 -g0 ${Opts_Cmmn[@]}

i686-w64-mingw32-objcopy -O pe-i386 -S "./${CommonObj}" "${LibOut}"

我注意到 objcopy 输出这个警告:

->

output.exe:.comment: section below image base

Wine 然后无法加载可执行文件:

->

Application could not be started, or no application associated with the specified file.

->

ShellExecuteEx failed: Bad EXE format for ./output.exe

linux mingw elf wine coff
© www.soinside.com 2019 - 2024. All rights reserved.