Clang 编译:"Cannot execute binary file"

Clang compilation : "Cannot execute binary file"

我是 clang++ 编译器标志的新手。我有一个关于编译的问题。这是我的命令:

clang++ -I ../llvm-project/llvm/include -I ../llvm-project/clang/include 
  -I ../llvm-project/build/tools/clang/include -I ../llvm-project/build/include 
  -O3 -c $(llvm-config-7 --cxxflags) 
  projectToTestHeadersBuilding.cpp -o projectToTestHeadersBuilding

我遇到错误:

./projectToTestHeadersBuilding: cannot execute binary file: Exec format error

执行后我有 projectToTestHeadersBuilding 文件。但是我无法运行执行。你能帮我理解如何获得可执行文件,这样我就可以 运行 使用 ./projectToTestHeadersBuilding 吗?

在您的初始命令中,您使用 -c 标志使 clang 输出成为 object file。这是已编译程序的一部分,但不是完整的可执行文件,为了获得最终的可执行文件,您必须执行链接步骤,通常与其他目标文件。

可以这样简单编译:

clang++ projectToTestHeadersBuilding.cpp -c -o projectToTestHeadersBuilding.o
clang++ projectToTestHeadersBuilding.o -o projectToTestHeadersBuilding
./projectToTestHeadersBuilding

一般来说,我们不需要显式地传递您已经传递的所有那些 -I 标志。如果您的设置需要它们,请将它们添加到我上面包含的命令中。