When I compile two .c files like given below I get a really weird error.
Code for compiling on terminal
gcc -I. -o main.c matrix.c -lblas -lgfortran
Error:
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13
...
I did a bit of reading and the solution seems to be to add a main file. But I know for a fact I had the main.c file with the int main() in it before compiling. Here's the list of everything before compiling:
> ls
errors.txt main.c main.c~ matrix.c matrix.c~ matrix.h matrix.h~
After compilation this is the list of everything present:
> ls
errors.txt main.c~ matrix.c matrix.c~ matrix.h matrix.h~
For some reason my main.c is getting deleted everytime I compile. What's weird is everything was working perfectly till a couple of minutes ago. Can someone help?
-o main.c
means the result of the compilation should be written tomain.c
(default is something likea.out
). This is definitely not what you intended, andmain.c
is being deleted since the compilation fails.If you meant "turn on optimizations", it's
-O
(uppercase).the
-o main.c
tells the compiler to write its compiled output into the file main.c, which is probably not what you want. You probably want:-o Option lets the c compiler save the compiled code in the file whose name is immediately after -o option
By default in the gcc compiler in unix save the compiled out put in a.out file
with -o option we can make it save in desired_filname.out file