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

时间:2014-10-29 04:55:45

标签: c++ c compilation terminal makefile

当我编译下面给出的两个.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
  ...

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

  > 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都会被删除。奇怪的是,一切都在几分钟前完美运作。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:7)

-o main.c表示编译结果应写入main.c(默认类似a.out)。这绝对不是您的意图,因为编译失败,main.c被删除。

如果您的意思是“开启优化”,则为-O(大写)。

答案 2 :(得分:2)

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

之后的文件中

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

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