我想在linux中为windows编译静态库。以下是我编写的程序
i586-mingw32msvc-cc -c static_lib.c -o static_lib.o
ar rv static_lib.a static_lib.o
和ranlib static_lib.a
在windows eclipse中编译程序时,编译器给出了以下错误。
static_test\static_lib.a: file format not recognized; treating as linker script
\static_test\static_lib.a:1: syntax error
collect2: ld returned 1 exit status
Build error occurred, build is stopped
守则如下:
static_lib.c
#include <stdio.h>
void func(void)
{
printf("Hello\n");
printf("Hello\n");
printf("Hello\n");
printf("Hello\n");
printf("Hello\n");
printf("Hello\n");
printf("Hello\n");
printf("Hello\n");
printf("Hello\n");
printf("Hello\n");
printf("Hello\n");
printf("Hello\n");
}
sample_static.c
#include <stdio.h>
extern void func(void);
int main ()
{
printf ("Main function\n");
func();
}
请给我建议编译并使其正常工作。
此致 约翰尼艾伦
答案 0 :(得分:2)
尝试使用交叉编译器归档程序而不是原生程序归档程序,即使用i586-mingw32msvc-ar
和i586-mingw32msvc-ranlib
而不是ar
和ranlib
。
或者这只是问题的错字?
答案 1 :(得分:1)
尝试i586-mingw32msvc-ar
而非普通ar
。通常,Linux中的ar
不支持用于Windows编程的PE格式。 (或者你必须指示它使用PE格式。)