Golang 目前仅支持GCC,并没有提供对MSVC的支持,似乎对LLVM的支持也有限
- 修改Go后端,使其原生支持MSVC(cmd/compile: add support for MSVC toolchain to go build (133946) · Gerrit Code Review)
- 修改Go后端,使其更好的和windows的llvm-ld.exe一起工作(cmd/link: support LLVM/Clang for MSVC (427515) · Gerrit Code Review)
- 使用原生link.exe+修改代码的方式(jat001/ddns4cdn: Automatically update the IP address of origin server for CDN.)
对第三种方式的尝试:
# MSVC CMD
set CXX=clang++
set CC=clang
set CGO_CFLAGS="-IC:/Users/pk5ls/Desktop/frida_go_test/msvc/stable"
go build -x -o build/ddns4cdn.a -buildmode=c-archive .
# MSVC PS
clang-cl /MD /Zi /Od /Fe"build\ddns4cdn_msvc_c.exe" /Fo"build\ddns4cdn_msvc_c.obj" brn\main.c /link build\ddns4cdn.a msvc\stable\frida-core.lib ws2_32.lib user32.lib gdi32.lib ole32.lib shell32.lib advapi32.lib setupapi.lib Psapi.lib Dnsapi.lib Crypt32.lib shlwapi.lib /DEBUG // 有堆栈
cl /MD /Fe"build\ddns4cdn_msvc_c.exe" /Fo"build\ddns4cdn_msvc_c.obj" brn\main.c /link build\ddns4cdn.a msvc\stable\frida-core.lib ws2_32.lib user32.lib gdi32.lib ole32.lib shell32.lib advapi32.lib setupapi.lib Psapi.lib Dnsapi.lib Crypt32.lib shlwapi.lib //没有堆栈