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