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

Mat*_*M_J 2 c c++ terminal makefile compilation

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

终端编译代码

  gcc -I. -o main.c matrix.c -lblas -lgfortran
Run Code Online (Sandbox Code Playgroud)

错误:

  /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
  ...
Run Code Online (Sandbox Code Playgroud)

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

  > ls
  errors.txt  main.c  main.c~  matrix.c  matrix.c~  matrix.h  matrix.h~
Run Code Online (Sandbox Code Playgroud)

编译后,这是所有存在的列表:

  > ls
  errors.txt  main.c~  matrix.c  matrix.c~  matrix.h  matrix.h~
Run Code Online (Sandbox Code Playgroud)

由于某种原因,每次编译时我的main.c都会被删除.奇怪的是,一切都在几分钟前完美运作.有人可以帮忙吗?

Joh*_*hnH 14

gcc -I. -o main.c matrix.c -lblas -lgfortran
Run Code Online (Sandbox Code Playgroud)

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

gcc -I. -o progname main.c matrix.c -lblas -lgfortran
Run Code Online (Sandbox Code Playgroud)


Bri*_*ian 7

-o main.c表示应该编写编译结果main.c(默认是这样的a.out).这绝对不是你想要的,并且main.c因为编译失败而被删除.

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