gpt4 book ai didi

64-bit - 如何为 64 位 Windows 编译现有的 posix 代码?

转载 作者:行者123 更新时间:2023-12-04 15:05:38 30 4
gpt4 key购买 nike

我可以使用 Cygwin 或 MinGW,但我最终需要使用 64 位代码,而不是 32 位代码。这是因为我将从 64 位托管 C# 调用 DLL。我似乎无法找到设置这些工具以创建 64 位二进制文​​件的良好引用。此外,如果 GCC 是第 4 版,而不是我的 Cygwin 安装附带的第 3 版,那就太好了。

另一种方法是某种形式的进程间通信。我会研究一下,但我上面列出的是我真正想要的。

最佳答案

64-bit MinGW ,基于(刚刚发布)gcc-4.4.0,可能是你最好的选择。
(由于 sourceforge.net 上的 mingw-w64 项目正在转移到 mingw-w64.org,因此最好使用 mingw-w64.org )

详细说明:
1.下载archive
2. 将其解压缩到 cygwin 下的某个位置。就我而言,顶级 cygwin 目录是 C:\cygwin , 我把包解压到 mingw目录,并最终在 C:\cygwin\mingw 中得到以下内容(在 cygwin 下显示为 /mingw:

$ ls -l /mingw
total 1
drwxr-xr-x+ 2 user None 0 May 10 08:32 bin
drwxr-xr-x+ 2 user None 0 May 10 05:45 include
drwxr-xr-x+ 2 user None 0 May 10 08:30 info
drwxr-xr-x+ 3 user None 0 May 10 08:30 lib
drwxr-xr-x+ 3 user None 0 May 10 05:45 libexec
drwxr-xr-x+ 4 user None 0 May 10 05:45 man
lrwxrwxrwx 1 user None 17 May 17 17:20 mingw -> x86_64-pc-mingw32
drwxr-xr-x+ 3 user None 0 May 10 04:16 share
drwxr-xr-x+ 5 user None 0 May 10 04:18 x86_64-pc-mingw32

3. 现在编译一些 C++ 代码。我用了:
// t.cc
#include <vector>
#include <string>

using namespace std;
int main()
{
vector<string> vs;
vs.push_back("abc");
}

并像这样编译它:
$ /mingw/bin/x86_64-pc-mingw32-g++ t.cc

4. 最后,通过运行 dumpbin /headers a.exe 验证结果是 Windows/x 64 可执行文件:
Microsoft (R) COFF/PE Dumper Version 7.00.9466
Copyright (C) Microsoft Corporation. All rights reserved.


Dump of file a.exe

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
8664 machine (AMD64)
10 number of sections
4A10AF9F time date stamp Sun May 17 17:45:19 2009
ABA00 file pointer to symbol table
EC4 number of symbols
F0 size of optional header
27 characteristics
Relocations stripped
Executable
Line numbers stripped
Application can handle large (>2GB) addresses

关于64-bit - 如何为 64 位 Windows 编译现有的 posix 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/873812/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com