我正在尝试编译包含以下行的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尝试重做它,这可能是问题吗?
答案 0 :(得分:2)
为cygwin构建的库文件在linux上不起作用。
必须从源代码重新编译库本身,以匹配要使用它的系统的详细信息(ABI,动态系统库依赖关系等)。
Cygwin尝试与Linux进行源兼容,因此如果你有源重建可能很简单。但它不是二进制兼容的,并且库基本上是二进制构建块,其元数据允许将它们链接在一起。