clang++编译生成文件运行报cannot execute binary file错误求助
问题根因
你的编译命令中加入了-c参数,该参数会强制clang++只完成编译、汇编步骤,跳过最终的链接环节,生成的是目标文件而非可执行程序,所以运行时会触发格式错误。
修复方案
- 首先移除命令中的
-c参数,同时补充LLVM对应的链接参数,仅--cxxflags只包含编译阶段的配置,链接阶段需要额外指定链接参数、依赖库:
修改后的编译命令示例如下:
clang++ -I ../llvm-project/llvm/include -I ../llvm-project/clang/include \ -I ../llvm-project/build/tools/clang/include -I ../llvm-project/build/include \ -O3 $(llvm-config-7 --cxxflags --ldflags --system-libs --libs core) \ projectToTestHeadersBuilding.cpp -o projectToTestHeadersBuilding
注意:如果你的代码用到了LLVM、Clang的其他组件,需要在
--libs后的core后面追加对应的组件名,例如用到Clang AST能力就需要补充clangAST clangBasic等组件。
验证方法
编译完成后执行file projectToTestHeadersBuilding,如果输出内容中包含executable标识,说明生成的是可执行文件,直接执行./projectToTestHeadersBuilding即可正常运行。
内容的提问来源于stack exchange,提问作者Farrukh Nabiyev
相关产品推荐
相关产品推荐

