w64devkit
w64devkit is a portable C and C++ development kit for x64 (and x86) Windows. Included tools:
Mingw-w64 GCC
: compilers, linker, assemblerGDB
: debuggerGNU Make
: standard build toolbusybox-w32
: standard unix utilities, including shVim
: powerful text editorUniversal Ctags
: source navigationNASM
: x86 assemblerCppcheck
: static code analysis
安装好后1,cmd终端会有如下工具:
工具名 | 功能描述 | 使用示例 |
---|---|---|
addr2line | 将编译后的程序中的地址转换为源代码行号 | addr2line -e binary_file |
ar | 用于创建、修改、提取归档文件 | ar -x archive_file (提取归档文件) |
as | 汇编器,将汇编语言代码转换为机器码 | as -o object_file.asm source.asm |
awk | 文本处理工具,用于模式扫描和处理 | awk '{print $1}' file.txt (打印每行第一列) |
basename | 显示文件名的基本部分(去掉目录) | basename /path/to/file |
bash | Bourne Again Shell,一种UNIX shell | bash script.sh (运行bash脚本) |
bc | 任意精度的算术语言和计算器 | bc -l (以数学模式启动) |
bzip2 | 压缩文件的程序,使用Burrows-Wheeler算法 | bzip2 file_to_compress |
c++ | C++编译器的符号链接或脚本 | c++ source.cpp (编译C++源文件) |
cat | 连接文件并打印到标准输出 | cat file.txt (显示文件内容) |
chmod | 更改文件或目录的权限 | chmod 755 file (设置文件权限) |
cksum | 计算并显示文件的CRC校验和 | cksum file |
clear | 清除终端屏幕 | clear |
cmp | 比较两个文件是否相同 | cmp file1 file2 |
comm | 比较两个已排序的文件,并显示它们的共同行和不同行 | comm -12 sorted_file1 sorted_file2 |
cp | 复制文件或目录 | cp source destination |
cpio | 从归档文件中提取文件或创建归档文件 | cpio -idmv < archive (提取归档) |
cpp | C预处理器 | cpp source.c (预处理C源文件) |
cppcheck | 静态代码分析工具,用于C/C++代码的检查 | cppcheck source.cpp |
crc32 | 计算文件的CRC32校验和 | crc32 file |
ctags | 生成用于编辑器的标签文件 | ctags -R /path/to/source |
cut | 剪切并分割列数据 | cut -d, -f1 file.csv (以逗号分隔并提取第一列) |
date | 显示或设置系统的日期和时间 | date (显示当前日期和时间) |
dc | 任意精度的桌面计算器 | `echo “3 4 + p” |
dd | 转换和复制文件 | dd if=/dev/zero of=empty_file bs=1M count=1 (创建1MB大小的空文件) |
debugbreak | 触发程序的调试器断点 | (通常在程序中使用,如 int 3 指令) |
df | 报告文件系统的磁盘空间使用情况 | df -h (以易读格式显示) |
diff | 比较两个文件的差异 | diff file1 file2 |
dirname | 打印目录名,去掉文件名的非目录部分 | dirname /path/to/file |
dlltool | 用于创建DLL导入库的工具 | dlltool --def input.def --output-lib output.lib |
dllwrap | 将可执行文件包装成DLL | dllwrap --output-target pe-i386:shared exec_file |
dos2unix | 将DOS格式的文本文件转换为UNIX格式 | dos2unix dos_file unix_file |
du | 估计文件或目录的磁盘使用量 | du -sh directory (以易读格式显示目录大小) |
dwp | 从二进制文件中提取调试信息 | dwp -i binary_file |
echo | 输出字符串到标准输出 | echo "Hello, World!" |
ed | 文本编辑器 | ed file_to_edit |
egrep | 扩展的grep,支持正则表达式进行模式搜索 | egrep '^[0-9]+' file.txt (搜索以数字开头的行) |
elfedit | 编辑ELF程序和可执行文件的头部信息 | elfedit --output new_file original_file |
env | 设置环境变量并运行程序 | env VAR=value command |
expand | 将制表符转换为指定数量的空格 | expand file.txt |
expr | 计算表达式 | expr 3 + 5 |
factor | 打印一个数的质因数 | factor 60 |
false | 退出状态为失败的简单命令 | false |
fgrep | 固定字符串搜索,比grep更快 | fgrep "text" file.txt |
find | 在目录树中搜索文件名 | find / -name "*.txt" |
fold | 将每行文本折叠或折断到指定宽度 | fold -w 80 file.txt (将文本折断到80列宽) |
free | 显示系统中内存的使用情况 | free -m (以MB为单位显示) |
fsync | 强制将文件缓冲区内容写入磁盘 | fsync file |
g++ | GNU C++编译器 | g++ source.cpp -o executable |
gcc-ar | 归档工具,用于创建静态库 | gcc-ar rcs libname.a object1.o object2.o |
gcc-nm | 列出可执行文件或对象文件中的符号 | gcc-nm object_file.o |
gcc-ranlib | 生成索引到归档库 | gcc-ranlib archive.a |
gcc | GNU C编译器 | gcc source.c -o executable |
gcov-dump | 显示由gcov生成的覆盖信息 | gcov-dump -o output.gcda source.c |
gcov-tool | 用于分析gcov数据的工具 | gcov-tool -p |
gcov | 测试代码覆盖率的工具 | gcov source.c |
gdb | GNU调试器 | gdb executable |
gdborig | 原始的GNU调试器版本 | gdborig executable |
gdbserver | 允许远程调试的gdb服务器 | gdbserver :port_number executable |
gendef | 生成C库的符号定义文件 | gendef --input-def input.def --output-lib libname.a |
genidl | 从C或C++头文件生成接口定义语言(IDL)文件 | genidl header.h |
genpeimg | 生成PE(Portable Executable)格式的镜像文件 | genpeimg --output image.exe source.c |
getopt | 解析命令行参数 | getopt -o ab:c --long alpha:,beta:,gamma file1 file2 |
gfortran | GNU Fortran编译器 | gfortran source.f90 -o executable |
gprof | 性能分析工具 | gprof executable gmon.out |
grep | 文本搜索工具 | grep "pattern" file.txt |
groups | 打印用户所属的组 | groups username |
gunzip | 解压缩.gz文件 | gunzip file.gz |
gzip | 压缩文件到.gz格式 | gzip file.txt |
hd | 十六进制转储工具 | hd file |
head | 显示文件的前几行 | head -n 10 file.txt (显示前10行) |
hexdump | 显示文件的十六进制表示 | hexdump file.bin |
httpd | 简单的web服务器 | httpd -fCGP file.html |
iconv | 转换文件的字符编码 | iconv -f utf-8 -t ascii file.txt |
id | 显示用户的ID信息 | id username |
inotifyd | 监视文件系统事件的守护进程 | inotifyd -m -r /path/to/watch |
install | 复制文件并设置属性 | install -m 755 source destination |
ipcalc | 计算和显示IP地址的详细信息 | ipcalc 192.168.0.1/24 |
jn | 计算Bessel函数 | `echo “1 0.5” |
kill | 发送信号到进程 | kill -9 process_id |
killall | 通过名称杀死所有匹配的进程 | killall process_name |
lash | 轻量级的shell | lash |
ld.bfd | GNU二进制链接器,BFD后端 | ld.bfd -o executable object1.o object2.o |
ld | 链接器 | ld -o executable object1.o object2.o |
ld.gold | GNU二进制链接器,Gold后端 | ld.gold -o executable object1.o object2.o |
less | 分页查看文件 | less file.txt |
ln | 创建链接,包括硬链接和符号链接 | ln -s source destination (创建符号链接) |
logname | 打印当前用户的登录名 | logname |
ls | 列出目录内容 | ls -l (以长列表格式列出当前目录内容) |
lsattr | 显示文件的属性 | lsattr file |
lto-dump | LLVM链接时优化(LTO)的调试信息转储工具 | lto-dump -d object_file |
lzcat | 解压缩.lz文件到标准输出 | lzcat file.lz |
lzma | LZMA压缩工具 | lzma file (压缩文件) |
lzop | 压缩文件,优化小文件压缩速度 | lzop file |
lzopcat | 解压缩.lzo文件到标准输出 | lzopcat file.lzo |
make | 管理和自动化软件的编译过程 | make (根据Makefile编译软件) |
md5sum | 计算和检查文件的MD5校验和 | md5sum file |
mingw32-make | 针对MinGW环境的make工具 | mingw32-make |
mkdir | 创建新目录 | mkdir new_directory |
mktemp | 创建临时文件或目录 | mktemp (创建临时文件) |
mv | 移动或重命名文件 | mv old_name new_name |
nasm | 汇编器,用于汇编NASM格式的代码 | nasm -f elf32 source.asm |
nc | 网络工具,用于读写网络连接 | nc -l -p 1234 (监听端口1234) |
ndisasm | 反汇编Intel x86机器码 | ndisasm -b 32 binary |
nl | 为每行添加行号 | nl file.txt |
nm | 列出目标文件或可执行文件中的符号 | nm executable |
nproc | 显示可用的CPU核心数 | nproc |
objcopy | 复制二进制文件,允许转换文件格式 | objcopy -O binary input.o output.bin |
objdump | 显示二进制文件信息 | objdump -T shared_object |
od | 八进制转储工具 | od -t x file (以十六进制显示文件内容) |
paste | 合并文件的列 | paste file1 file2 (合并两列数据) |
patch | 应用差分文件 | patch file original patched |
pgrep | 根据名称或其他属性查找进程 | pgrep -f "pattern" |
pidof | 打印运行特定命令的进程ID | pidof process_name |
pipe_progress | 显示管道操作的进度 | `some_command |
pkg-config | 管理编译时的库依赖信息 | pkg-config --libs libname |
pkill | 通过名称杀死进程 | pkill process_name |
printenv | 打印所有或指定的环境变量 | printenv 或 printenv VARNAME |
printf | 格式化并打印数据 | printf "%-10s %-5d\n" "Name" "ID" |
ps | 显示当前运行的进程 | ps aux |
pwd | 打印当前工作目录 | pwd |
ranlib | 生成归档库的索引 | ranlib archive.a |
readelf | 显示ELF格式的文件信息 | readelf -h executable |
readlink | 打印符号链接指向的目标 | readlink symbolic_link |
realpath | 打印文件的规范化绝对路径 | realpath file |
reset | 重置终端 | reset |
rev | 反转字符串或行 | `echo “hello” |
rm | 删除文件或目录 | rm file 或 rm -r directory |
rmdir | 删除空目录 | rmdir directory |
sed | 流编辑器,用于对文本进行过滤和转换 | sed 's/old/new/g' file.txt |
seq | 打印数字序列 | seq 1 10 |
sh | Shell,用于执行脚本或命令行 | sh script.sh |
sha1sum | 计算和检查文件的SHA1校验和 | sha1sum file |
sha256sum | 计算和检查文件的SHA256校验和 | sha256sum file |
sha3sum | 计算和检查文件的SHA3校验和 | sha3sum file |
sha512sum | 计算和检查文件的SHA512校验和 | sha512sum file |
shred | 安全地覆盖文件,以防止数据恢复 | shred file |
shuf | 打乱行的顺序或随机选择行 | shuf file.txt 或 shuf -n 1 file.txt |
size | 显示二进制文件的组件大小 | size executable |
sleep | 暂停执行指定的秒数 | sleep 5 |
sort | 对文本行进行排序 | sort file.txt |
split | 将文件分割成多个更小的文件 | split file.txt 10k (每10KB一个文件) |
ssl_client | 使用SSL协议的客户端 | openssl s_client -connect server:port |
stat | 显示文件或文件系统的详细信息 | stat file |
strings | 从二进制文件中提取文本字符串 | strings binary_file |
strip | 移除可执行文件或对象文件的符号信息 | strip executable |
su | 切换用户身份或成为超级用户 | su - (切换到root用户) |
sum | 计算文件的CRC校验和和大小 | sum file |
sync | 强制将缓冲区中的文件写入磁盘 | sync |
tac | 反向输出文件的每一行 | tac file.txt |
tail | 显示文件的最后几行 | tail -n 10 file.txt (显示最后10行) |
tar | 打包、压缩或解压缩文件 | tar -czvf archive.tar.gz files |
tee | 将标准输入复制到文件和标准输出 | `echo “Hello” |
test | 检查文件类型或比较值 | [ -f file ] && echo "It's a file" |
time | 测量命令执行时间 | time ls |
timeout | 在指定的超时时间后终止命令执行 | timeout 5s sleep 10 |
touch | 更新文件的访问和修改时间或创建新文件 | touch file |
tr | 替换或删除字符 | tr -d 'a-z' file.txt (删除所有小写字母) |
true | 退出状态为成功的简单命令 | true |
truncate | 截断文件到指定长度或删除文件 | truncate -s 0 file (将文件大小设置为0) |
ts | 显示或设置时间戳 | ts |
ttysize | 打印终端尺寸 | ttysize |
uname | 打印系统信息 | uname -a (打印所有系统信息) |
uncompress | 解压缩.Z格式的文件 | uncompress file.Z |
unexpand | 将制表符转换为多个空格 | unexpand file.txt |
uniq | 过滤掉重复的行 | `sort file.txt |
unix2dos | 将UNIX格式的文本文件转换为DOS格式 | unix2dos file.txt |
unlzma | 解压缩.lzma格式的文件 | unlzma file.lzma |
unlzop | 解压缩.lzo格式的文件 | unlzop file.lzo |
unxz | 解压缩.xz格式的文件 | unxz file.xz |
unzip | 解压缩.zip文件 | unzip archive.zip |
uptime | 显示系统运行时间 | uptime |
usleep | 使程序暂停指定的微秒数 | usleep 500000 (暂停500000微秒) |
uudecode | 解码uuencode编码的文件 | uudecode file.uu |
uuencode | 将二进制文件编码为uuencode格式 | uuencode binary_file encoded_file |
vc++filt | 过滤MSVC编译器的诊断输出,使其更易读 | vc++filt compiler_output.txt |
watch | 周期性执行命令并显示结果 | watch -n 2 'ls -l' (每2秒列出目录) |
wc | 计算文件中的字节数、字数、行数 | wc file.txt |
wget | 从网络下载文件 | wget http://example.com/file |
which | 显示执行特定命令的可执行文件路径 | which ls |
whoami | 打印当前用户的用户名 | whoami |
whois | 查询域名或IP地址的注册信息 | whois example.com |
widl | Windows接口定义语言编译器 | widl -h |
windmc | Windows消息目录编译器 | windmc message.mc |
windres | Windows资源文件编译器 | windres -i resource.rc -o resource.o |
x86_64-w64-mingw32-addr2line | 将MinGW-w64编译的程序中的地址转换为源代码行号 | x86_64-w64-mingw32-addr2line -e binary_file |
x86_64-w64-mingw32-ar | MinGW-w64的归档工具,用于创建静态库 | x86_64-w64-mingw32-ar rcs libname.a object.o |
x86_64-w64-mingw32-as | MinGW-w64的汇编器 | x86_64-w64-mingw32-as source.asm -o object.o |
x86_64-w64-mingw32-c++ | MinGW-w64的C++编译器 | x86_64-w64-mingw32-c++ source.cpp -o executable |
x86_64-w64-mingw32-c++filt | MinGW-w64的C++filt,用于解析C++符号 | x86_64-w64-mingw32-c++filt |
x86_64-w64-mingw32-cpp | MinGW-w64的C预处理器 | x86_64-w64-mingw32-cpp source.c |
x86_64-w64-mingw32-dlltool | MinGW-w64的dlltool,用于创建DLL导入库 | x86_64-w64-mingw32-dlltool --def deffile.def --output-lib libname.a |
x86_64-w64-mingw32-dllwrap | MinGW-w64的dllwrap,用于创建DLL包装器 | x86_64-w64-mingw32-dllwrap --output target.dll source.o |
x86_64-w64-mingw32-elfedit | MinGW-w64的ELF编辑器 | x86_64-w64-mingw32-elfedit executable |
x86_64-w64-mingw32-g++ | MinGW-w64的g++编译器 | x86_64-w64-mingw32-g++ source.cpp -o executable |
x86_64-w64-mingw32-gcc-13.2.0 | MinGW-w64的特定版本gcc编译器 | x86_64-w64-mingw32-gcc-13.2.0 source.c -o executable |
x86_64-w64-mingw32-gcc-ar | MinGW-w64的gcc-ar工具,用于静态库操作 | x86_64-w64-mingw32-gcc-ar rcs libname.a object.o |
x86_64-w64-mingw32-gcc-nm | MinGW-w64的gcc-nm工具,显示符号信息 | x86_64-w64-mingw32-gcc-nm executable |
x86_64-w64-mingw32-gcc-ranlib | MinGW-w64的gcc-ranlib工具,生成库索引 | x86_64-w64-mingw32-gcc-ranlib archive.a |
x86_64-w64-mingw32-gcc | MinGW-w64的gcc编译器 | x86_64-w64-mingw32-gcc source.c -o executable |
x86_64-w64-mingw32-gcov-dump | MinGW-w64的gcov-dump工具,显示覆盖信息 | x86_64-w64-mingw32-gcov-dump -o output.gcda source.c |
x86_64-w64-mingw32-gcov-tool | MinGW-w64的gcov-tool工具,分析gcov数据 | x86_64-w64-mingw32-gcov-tool -p |
x86_64-w64-mingw32-gcov.exe | 测试代码覆盖率的工具,MinGW-w64版本 | x86_64-w64-mingw32-gcov source.c |
x86_64-w64-mingw32-gfortran.exe | MinGW-w64的GNU Fortran编译器 | x86_64-w64-mingw32-gfortran source.f90 -o executable |
x86_64-w64-mingw32-ld.exe | MinGW-w64的链接器 | x86_64-w64-mingw32-ld -o executable object.o |
x86_64-w64-mingw32-nm.exe | MinGW-w64的nm,列出符号信息 | x86_64-w64-mingw32-nm executable |
x86_64-w64-mingw32-objcopy.exe | MinGW-w64的objcopy,复制二进制文件 | x86_64-w64-mingw32-objcopy -O binary input.o output.bin |
x86_64-w64-mingw32-objdump.exe | MinGW-w64的objdump,显示二进制文件信息 | x86_64-w64-mingw32-objdump -T shared_object |
x86_64-w64-mingw32-pkg-config.exe | MinGW-w64的pkg-config,管理库依赖信息 | x86_64-w64-mingw32-pkg-config --libs libname |
x86_64-w64-mingw32-ranlib.exe | MinGW-w64的ranlib,生成归档库的索引 | x86_64-w64-mingw32-ranlib archive.a |
x86_64-w64-mingw32-readelf.exe | MinGW-w64的readelf,显示ELF文件信息 | x86_64-w64-mingw32-readelf -h executable |
x86_64-w64-mingw32-size.exe | MinGW-w64的size,显示二进制文件的组件大小 | x86_64-w64-mingw32-size executable |
x86_64-w64-mingw32-strings.exe | MinGW-w64的strings,提取文本字符串 | x86_64-w64-mingw32-strings binary_file |
x86_64-w64-mingw32-strip.exe | MinGW-w64的strip,移除符号信息 | x86_64-w64-mingw32-strip executable |
x86_64-w64-mingw32-windmc.exe | MinGW-w64的windmc,Windows消息目录编译器 | x86_64-w64-mingw32-windmc message.mc |
x86_64-w64-mingw32-windres.exe | MinGW-w64的windres,Windows资源文件编译器 | x86_64-w64-mingw32-windres -i resource.rc -o resource.o |
xargs | 将标准输入转换成命令行参数并执行命令 | `echo file* |
xxd | 十六进制转储工具,也可以将十六进制转储转换回原始数据 | xxd file 或 xxd -r -p output.hex input.bin |
xz | 高比率压缩文件 | xz file |
xzcat | 解压缩.xz文件到标准输出 | xzcat file.xz |
yes | 持续输出指定字符串 | yes "string" |
zcat | 解压缩.gz文件到标准输出 | zcat file.gz |
|