C:主要没找到,但它就在那里 编译错误

当我编译下面给出的两个.c文件时,我得到一个非常奇怪的错误。

终端编译代码

gcc -I. -o main.c matrix.c -lblas -lgfortran 

错误:

  /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 ... 

我做了一些阅读,解决方案似乎是添加一个主文件。 但是我知道在编译之前我在main.c中使用了int main()。 这是编译前的所有内容列表:

  > ls errors.txt main.c main.c~ matrix.c matrix.c~ matrix.h matrix.h~ 

编译后,这是所有内容的列表:

  > ls errors.txt main.c~ matrix.c matrix.c~ matrix.h matrix.h~ 

出于某种原因,每次编译时我的main.c都会被删除。 奇怪的是,几分钟前一切都运转良好。 有人可以帮忙吗?

 gcc -I. -o main.c matrix.c -lblas -lgfortran 

-o main.c告诉编译器将其编译后的输出写入main.c文件,这可能不是你想要的。 你可能想要:

 gcc -I. -o progname main.c matrix.c -lblas -lgfortran 

-o main.c表示编译结果应该写入main.c (默认类似于a.out )。 这绝对不是你想要的,并且由于编译失败, main.c正被删除。

如果你的意思是“开启优化”,那就是-O (大写)。

-o Option允许c编译器将编译后的代码保存在名称紧跟在-o选项之后的文件中

默认情况下,在unix中的gcc编译器中将编译后的输出保存在a.out文件中

使用-o选项,我们可以将其保存在desired_filname.out文件中