Farrukh Nabiyev
Farrukh Nabiyev

Reputation: 366

Clang compilation : "Cannot execute binary file"

I am new to the clang++ compiler flags. I have an issue regarding compilation. Here is my cmd:

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

I am getting error:

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

After execution I have projectToTestHeadersBuilding file. But I can not run executable. Can you please help me to understand how to get executable, so I can run it using ./projectToTestHeadersBuilding ?

Upvotes: 1

Views: 1848

Answers (1)

qz-
qz-

Reputation: 1048

In your initial command you use the -c flag which makes clang output an object file. This is part of a compiled program but not a complete executable, in order to get the final executable you must perform a linking step, usually with other object files.

A simple compilation can be done as so:

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

Generally we do not need to explicitly pass all those -I flags you have passed. If they are needed with your setup, add them to the commands I've included above.

Upvotes: 4

Related Questions