与MinGW一起建立精灵共享图书馆

Building Elf Shared Library with MinGW

本文关键字:共享 图书馆 精灵 建立 MinGW 一起      更新时间:2023-10-16

我正在尝试用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
我误解什么了吗?

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