Day05_Linux项目怎么打包成exe
01.通过linux操作系统打包成exe文件??
通过修改makefile
EXE=contact.exe
Filename=$(wildcard *.c)
Head=$(wildcard *.h)
Objs=$(patsubst %.c,%.o,$(Filename))
# 使用 MinGW 的 GCC 编译器
CC=x86_64-w64-mingw32-gcc
CFlags=-c -Wall
LDFLAGS=-lmingw32 -lmsvcrt -luuid -loleaut32 -lole32 # 添加链接选项all:$(EXE)
$(EXE):$(Objs)$(CC) $^ $(LDFLAGS) -o $@
%.o:%.c $(Head)$(CC) $(CFlags) $< -o $@
.PHONY:clean
clean:rm -f $(EXE) $(Objs) a.out
C语言里面代码一般都是UTF-8编码的,但是windows打包是GBK编码的
需要在C语言添加处理语句
方法 1:使用 Windows API 设置控制台为 UTF-8 模式
#include <windows.h>int main() {// 设置控制台输出为UTF-8编码SetConsoleOutputCP(CP_UTF8);// 后续代码保持不变...printf("中文测试\n");return 0;
}
说明:
SetConsoleOutputCP(CP_UTF8) 将控制台输出代码页设置为 UTF-8(65001)。
需确保源码文件本身以 UTF-8 编码保存(大多数现代编辑器默认如此)。
方法 2:使用宽字符 API(推荐)
使用 Windows 特有的宽字符 API(如
wprintf
),配合 Unicode 字符串:
#include <stdio.h>
#include <wchar.h>
#include <windows.h>int main() {// 设置控制台为UTF-8模式SetConsoleOutputCP(CP_UTF8);// 使用宽字符输出wprintf(L"中文测试\n"); // 注意字符串前的Lreturn 0;
}
说明:
wprintf
用于输出宽字符字符串(wchar_t
类型)。字符串前需加
L
前缀,表示 Unicode 字符串。
方法 3:手动转换字符编码
#include <stdio.h>
#include <windows.h>// 将UTF-8字符串转换为控制台可显示的字符串
char* utf8_to_console(const char* utf8_str) {// 计算宽字符所需缓冲区大小int wcs_len = MultiByteToWideChar(CP_UTF8, 0, utf8_str, -1, NULL, 0);wchar_t* wcs = (wchar_t*)malloc(wcs_len * sizeof(wchar_t));MultiByteToWideChar(CP_UTF8, 0, utf8_str, -1, wcs, wcs_len);// 获取控制台当前代码页UINT console_cp = GetConsoleOutputCP();// 计算多字节字符串所需缓冲区大小int mb_len = WideCharToMultiByte(console_cp, 0, wcs, -1, NULL, 0, NULL, NULL);char* mb_str = (char*)malloc(mb_len * sizeof(char));WideCharToMultiByte(console_cp, 0, wcs, -1, mb_str, mb_len, NULL, NULL);free(wcs);return mb_str;
}int main() {const char* utf8_text = "中文测试";char* console_text = utf8_to_console(utf8_text);printf("%s\n", console_text);free(console_text);return 0;
}
02.通过window操作系统打包成exe文件??
需要下载软件(hostbuf-finalshell)
https://www.hostbuf.com/t/988.html
上面是如何在windows中操作linux系统的流程
按住shift+长按鼠标右键打开powershell