/lib/libmatrix.a:文件无法识别:文件格式无法识别collect2:ld返回1退出状态

时间:2013-06-17 17:34:12

标签: c linux gcc compiler-errors

我正在尝试编译包含以下行的makefile:

gcc -I. -I/home/usr/Documents/MTV/include -ggdb3 -Wall -O2 -o ascii2bin.c \
    -L. -L../lib -lmatrix -lseq_io -lpic -lm

这就是我得到的:

../lib/libmatrix.a: file not recognized: File format not recognized
collect2: ld returned 1 exit status

有关libmatrix.a可能发生什么的任何想法?我如何阅读libmatrix.a中的内容?我尝试使用'ar -t'命令,但它也说文件格式无法识别。

该项目之前由其他人编译在Cygwin上,现在我正在使用ubuntu gcc尝试重做它,这可能是问题吗?

1 个答案:

答案 0 :(得分:2)

为cygwin构建的库文件在linux上不起作用。

必须从源代码重新编译库本身,以匹配要使用它的系统的详细信息(ABI,动态系统库依赖关系等)。

Cygwin尝试与Linux进行源兼容,因此如果你有源重建可能很简单。但它不是二进制兼容的,并且库基本上是二进制构建块,其元数据允许将它们链接在一起。