windows 下 MinGW,TDM-GCC 编译64位和32位应用

一、C程序代码

#include <stdio.h>

// 验证当前编译的程序是32位还是64位
int GetExeBits()
{
    return sizeof(char*) * 8;
}

int main(int argc, char* argv[])
{
    printf("current app bit is:%d bit\n", GetExeBits());
    return 0;
}

二、编译命令(cd TDM-GCC-64\bin):

PS D:\TDM-GCC-64\bin> gcc .\test.cpp -m32 -o test
PS D:\TDM-GCC-64\bin> ./test.exe
current app bit is 32 bit
PS D:\TDM-GCC-64\bin> gcc .\test.cpp -m64 -o test
PS D:\TDM-GCC-64\bin> ./test.exe
current app bit is 64 bit
PS D:\TDM-GCC-64\bin> gcc .\test.cpp -o test
PS D:\TDM-GCC-64\bin> ./test.exe
current app bit is 64 bit

三、实验结论:

TDM-GCC-64的编译器默认编译出来的是64位应用

四、总结:

32位版:

-m32 :生成32位的应用。

64位版:

-m64 :生成64位的应用。

debug版:

-g :生成调试信息。

release版:

1) -static :进行静态链接,使程序不再依赖动态库。
2) -O3 : 进行最快速度优化,后面的数字是优化等级
3)-DNDEBUG:定义NDEBUG宏,屏蔽断言(assert函数导致的断言)。

当不使用-m32或-m64参数时,一般情况下会生成跟操作系统位数一致的应用

1)32位Linux下的GCC,默认是编译为32位应用。
2)64位Linux下的GCC,默认是编译为64位应用。
3)Window系统下的MinGW,总是编译为32位应用。因为MinGW只支持32位应用。
4)Window系统下的MinGW-w64(例如安装了TDM-GCC,选择MinGW-w64),默认是编译为64位应用。

附加:

1.Windows控制台输出中文乱码(UTF-8)
使用 SetConsoleOutputCP(65001);
设置控制台输出代码页为UTF8,现在使用默认的控制台运行可以看到936代码页下也能正常显示
例子:
将下列代码保存位UTF-8格式的文件,然后编译后运行测试

int main(int argc, char *argv[]) {
	SetConsoleOutputCP(65001); 
	printf("aaa测试下中文11\n");
	return 0;
}

2.关闭编码格式
-finput-charset 指定源文件的编码(若不指定,默认是UTF-8)
-fexec-charset 指定多字节字符串(const char*)常量在编译后的程序里保存的编码集(若不指定,默认是UTF-8)
-fwide-exec-charset 指定宽字节字符串(const wchar_t*)常量在编译后的程序里的保存的编码集

例子:

gcc Test.cpp -g -lstdc++ -finput-charset=GB2312 -fexec-charset=GB2312
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值