C++ 使用gcc为windows中的所有处理器类型创建通用exe

C++ 使用gcc为windows中的所有处理器类型创建通用exe,c++,windows,c++11,gcc,cross-compiling,C++,Windows,C++11,Gcc,Cross Compiling,我想使用gcc为windows中的所有处理器类型创建通用exe。 今天,当我在使用英特尔i7处理器的Windows7中使用gcc生成exe时,它在使用AMDA6处理器的Windows7上不起作用。我发出了以下编译命令: g++ -std=c++11 -pthread -I. strcmp.cpp -L. -lstdc++ -o strcmp.exe 我尝试为生成可执行文件提供偶数-march=x86-64选项。但每一次,它都能在它生成的PC上工作,但不能在装有AMD处理器的PC上工作 在gcc

我想使用gcc为windows中的所有处理器类型创建通用exe。 今天,当我在使用英特尔i7处理器的Windows7中使用gcc生成exe时,它在使用AMDA6处理器的Windows7上不起作用。我发出了以下编译命令:

g++ -std=c++11 -pthread -I. strcmp.cpp -L. -lstdc++ -o strcmp.exe
我尝试为生成可执行文件提供偶数
-march=x86-64
选项。但每一次,它都能在它生成的PC上工作,但不能在装有AMD处理器的PC上工作

在gcc中,我需要提供什么标志来为所有处理器创建二进制文件

不按以下方式工作:
没有输出。Exe优雅地关闭。没有撞车,什么也没有。因为我正在运行的是和exe,它甚至没有抛出第一个std::cout,所以调试变得越来越困难

代码是非常简单的helloworld程序,带有std::cout

使用的编译器:Windows7中的GCC4.8.1

示例代码:

int main(int argc, char* argv[])
{
    char str1[] = "BRAND   ";
    char str2[] = "brand   ";
    char str3[] = "BRANd";
    char str4[] = "BRaND";

    char strx1[] = "Copper";
    char strx2[] = "COPPER  ";
    char strx3[] = "COPper";
    char strx4[] = "CoPPer  ";
    bool result;

    std::cout << "Strings: " << "str1: " << str1 << ", str2: " << str2 << std::endl;
    result = strncmp(str1, sizeof(str1), str2, sizeof(str2));
    std::cout << "Result: " << result << ", should be true" << std::endl;

    std::cout << "Strings: " << "str3: " << str3 << ", str2: " << str2 << std::endl;
    result = strncmp(str3, sizeof(str3), str2, sizeof(str2));
    std::cout << "Result: " << result << ", should be true" << std::endl;

    std::cout << "Strings: " << "str4: " << str4 << ", str2: " << str2 << std::endl;
    result = strncmp(str4, sizeof(str4), str2, sizeof(str2));
    std::cout << "Result: " << result << ", should be true" << std::endl;

    std::cout << "Strings: " << "str1: " << str1 << ", str4: " << str4 << std::endl;
    result = strncmp(str1, sizeof(str1), str4, sizeof(str4));
    std::cout << "Result: " << result << ", should be true" << std::endl;

    std::cout << "Strings: " << "str1: " << str1 << ", strx2: " << strx2 << std::endl;
    result = strncmp(str1, sizeof(str1), strx2, sizeof(strx2));
    std::cout << "Result: " << result << ", should be false" << std::endl;

    std::cout  << std::endl  << std::endl;

    return 1;
}
intmain(intargc,char*argv[])
{
char str1[]=“品牌”;
char str2[]=“品牌”;
char str3[]=“品牌”;
char str4[]=“品牌”;
char strx1[]=“铜”;
字符strx2[]=“铜”;
char strx3[]=“铜”;
字符strx4[]=“铜”;
布尔结果;

std::cout“不工作”是什么意思?它是否崩溃或计算不正确的结果?或者它是否以其他方式失败?此外,如果您知道代码中的哪些行有问题,请将它们添加到问题中。为什么要进行否决?“我需要在gcc中提供什么标志来为所有处理器创建二进制文件?”是一个有效的问题(即使不存在这样的选项。那么这就是答案)。没有输出。Exe正常关闭。没有崩溃,什么都没有。因为,它是和我正在运行的Exe,甚至没有抛出第一个std::cout,调试变得越来越困难。“所有处理器”?!@πάνταῥεῖ 为什么不否决呢?这是一个非常不明确的问题。他甚至没有列出他想要针对的处理器,而是出于某种原因假设他可以用相同的机器代码为“任何计算机”编写代码。(当然,由于x86/x86_64友好,在Windows机器上使用的最流行的芯片组通常是兼容的。但这并不重要。细节需要说明,而不是假设。)@LightnessRacesinOrbit。对于Sunil:有很多很多种处理器。“我想在所有处理器上运行”这不是一个合理的要求。我猜你的意思是“自奔腾以来的x86兼容处理器,与amd64 64位版本相同”。不是,例如ia-64、286或powerPC?