使用MinGW构建Elf共享库

时间:2015-08-09 15:25:26

标签: c++ windows shared-libraries elf

我正在尝试使用MinGW在Windows上构建共享库,请遵循以下教程: Building_elf_shared_libraries

我执行此步骤:

$ gcc -fPICenter code here -c libfoo.c -o libfoo.o
$ gcc -Wall -O2 -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0.0 libfoo.o

当我得到.so时,我尝试用 readelf 阅读它并得到错误:

$ readelf -h libfoo.so.1.0.0
readelf: Error: Not an ELF file - it has the wrong magic bytes at the start

我误解了什么吗?

1 个答案:

答案 0 :(得分:0)

是的,你确实误解了一些东西,MinGW是一个gcc的端口,可以将gcc用于目标窗口并在Windows上本地运行(或者如果你的主机是linux,则从linux定位windows)。默认情况下,它将以PE格式输出文件,而不是ELF。这就是你的readelf调用失败的原因。尽管如此,我假设您正在尝试构建一个动态链接的库,因此我将提供一个很好的教程here,它可以让您朝着正确的方向前进。