I am trying to build program with multiple files for the first time. I have never had any problem with compliling program with main.cpp only. With following commands, this is the result:
$ g++ -c src/CNumber.cpp src/CNumber.h -o src/CNumber.o
$ g++ -c src/CExprPart.cpp src/CExprPart.h -o src/CExprPart.o
$ g++ -c src/CExpr.cpp src/CExpr.h -o src/CExpr.o
$ g++ -c src/main.cpp -o src/main.o
$ g++ src/CNumber.o src/CExprPart.o src/CExpr.o src/main.o -o execprogram
src/CNumber.o: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
What could cause such error and what should I do with it? Using Linux Mint with gcc (Ubuntu/Linaro 4.7.2-2ubuntu1). Thank you
Try putting all of the following files in one directory:
example.cpp:
my_functions.cpp:
my_functions.h:
Then issue these commands:
I ran into this error in building something - it turned out to be due to a previous build failing while compiling a source file to an .o file - that .o file was incomplete or corrupted, so when I tried another build it gave this error on that file. The solution was just to delete the .o file (or run
make clean
, if you have a makefile with that target).(This doesn't have much to do with the original post problem, but this was one of the first hits in a Google search for the error, so just adding it here).
This is wrong:
You shouldn't "compile" .h files. Doing so will create precompiled header files, which are not used to create an executable. The above should simply be
Similar for compiling the other .cpp files