如何修复介子生成不正确的链接器标志(--子系统控制台)
How to fix meson generating an incorrect linker flag (--subsystem console)
我创建了一个简单的项目来让自己习惯介子,但构建一直失败。
这就是我所做的(设置环境和构建):
set CC=clang
set CC_LD=lld
set CFLAGS="--target x86_64-pc-windows-msvc"
meson build
cd build
ninja
我的meson.build
如下:
project('EtaClient', 'c')
src = ['src/main.c', 'src/linkedlist.c']
executable('EtaClient', src)
target = 'x86_64-pc-windows-msvc'
构建时,出现以下错误(obj 文件已成功构建,但未链接,因此未构建 exe):
LINK : warning LNK4044: unrecognized option '/-subsystem'; ignored
LINK : fatal error LNK1181: cannot open input file 'console.obj'
clang: error: linker command failed with exit code 1181 (use -v to see invocation)
当我查看我的 build.ninja
看看发生了什么时,我发现:
build EtaClient.exe | EtaClient.pdb: c_LINKER EtaClient.exe.p/src_main.c.obj EtaClient.exe.p/src_linkedlist.c.obj
LINK_ARGS = "-Wl,/nologo" "-Wl,/release" "-Wl,/nologo" "-Wl,/DEBUG" "-Wl,/PDB:EtaClient.pdb" "-Wl,--subsystem,console" "-lkernel32" "-luser32" "-lgdi32" "-lwinspool" "-lshell32" "-lole32" "-loleaut32" "-luuid" "-lcomdlg32" "-ladvapi32"
我将 "-Wl,--subsystem,console"
替换为 "-Wl,/subsystem:console"
,构建成功编译,但每次修改 meson.build
.
时我都必须手动进行此编辑
谁能告诉我为什么会这样,以及如何设置介子来生成正确的标志?
提前致谢。
使用 clang-cl 而不是 clang,并在 windows
时省略链接器的定义
set CC=clang-cl
set CFLAGS="--target x86_64-pc-windows-msvc"
meson build
cd build
ninja
我创建了一个简单的项目来让自己习惯介子,但构建一直失败。
这就是我所做的(设置环境和构建):
set CC=clang
set CC_LD=lld
set CFLAGS="--target x86_64-pc-windows-msvc"
meson build
cd build
ninja
我的meson.build
如下:
project('EtaClient', 'c')
src = ['src/main.c', 'src/linkedlist.c']
executable('EtaClient', src)
target = 'x86_64-pc-windows-msvc'
构建时,出现以下错误(obj 文件已成功构建,但未链接,因此未构建 exe):
LINK : warning LNK4044: unrecognized option '/-subsystem'; ignored
LINK : fatal error LNK1181: cannot open input file 'console.obj'
clang: error: linker command failed with exit code 1181 (use -v to see invocation)
当我查看我的 build.ninja
看看发生了什么时,我发现:
build EtaClient.exe | EtaClient.pdb: c_LINKER EtaClient.exe.p/src_main.c.obj EtaClient.exe.p/src_linkedlist.c.obj
LINK_ARGS = "-Wl,/nologo" "-Wl,/release" "-Wl,/nologo" "-Wl,/DEBUG" "-Wl,/PDB:EtaClient.pdb" "-Wl,--subsystem,console" "-lkernel32" "-luser32" "-lgdi32" "-lwinspool" "-lshell32" "-lole32" "-loleaut32" "-luuid" "-lcomdlg32" "-ladvapi32"
我将 "-Wl,--subsystem,console"
替换为 "-Wl,/subsystem:console"
,构建成功编译,但每次修改 meson.build
.
谁能告诉我为什么会这样,以及如何设置介子来生成正确的标志? 提前致谢。
使用 clang-cl 而不是 clang,并在 windows
时省略链接器的定义set CC=clang-cl
set CFLAGS="--target x86_64-pc-windows-msvc"
meson build
cd build
ninja