2

我正在尝试编译一个包含以下行的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尝试重做它,会不会是这个问题?

4

1 回答 1

2

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

库本身必须从源代码重新编译以匹配它打算在其上使用的系统的详细信息(ABI、动态系统库依赖项等)。

Cygwin 试图与 Linux源代码兼容,所以如果你有源代码重建可能很简单。但它不是二进制兼容的,库基本上是带有元数据的二进制构建块,可以将它们链接在一起。

于 2013-06-18T15:32:27.070 回答