Added .dll.a variant

This commit is contained in:
bzt 2023-06-23 19:15:56 +02:00
parent 57087cfaeb
commit 4b0a991333
3 changed files with 7 additions and 8 deletions

View file

@ -35,8 +35,7 @@ Szigorúan véve csak a **crt0.o** és a **link.ld** fájlokra van szükség, ez
"main()" eljárását. Viszont ahhoz, hogy a libc funkciókat (mint pl. memcmp, strcpy, malloc vagy fopen) használhasd, linkelned
kell a **libuefi.a** fájllal is.
Egyenlőre ez a metódus csak gcc-vel működik, mivel a Clang úgy van beállítva, hogy direktben PE fájlokat hoz létre, ezért nem tud
statikus ELF .a fájlokat generálni, sem linkelni velük.
Clang úgy van beállítva, hogy direktben PE fájlokat hoz létre, ezért a generált függvénykönyvtár neve **libuefi.dll.a*.
Forrásként terjesztve
---------------------

View file

@ -44,8 +44,7 @@ the linking and converting.
Strictly speaking you'll only need **crt0.o** and **link.ld**, that will get you started and will call your application's
"main()", but to get libc functions like memcmp, strcpy, malloc or fopen, you'll have to link with **libuefi.a** too.
For now this only works with gcc, because Clang is configured in a way to directly create PE files, so it cannot create
nor link with static ELF .a files.
Clang is configured in a way to directly create PE files, so the resulting library's name is **libuefi.dll.a*.
Distributing as Source
----------------------

View file

@ -88,12 +88,8 @@ uefi/libuefi.a:
libuefi.lib: $(LIBOBJS)
libuefi.a: $(LIBOBJS)
ifneq ($(USE_GCC),)
@rm $@ 2>/dev/null || true
$(AR) -frsv $@ $(LIBOBJS) >/dev/null
else
@true
endif
$(TARGET): $(addprefix $(OUTDIR),$(TARGET).so)
ifneq ($(USE_GCC),)
@ -118,7 +114,12 @@ buildlib:
@mkdir ../build ../build/uefi 2>/dev/null || true
@cp crt_$(ARCH).o ../build/uefi/crt0.o
@cp elf_$(ARCH)_efi.lds ../build/uefi/link.ld
ifneq ($(USE_GCC),)
@cp libuefi.a uefi.h ../build/uefi
else
@cp uefi.h ../build/uefi
@cp libuefi.a ../build/uefi/libuefi.dll.a
endif
clean:
@rm $(addprefix $(OUTDIR),$(TARGET)) *.o *.a *.lib *.elf $(LIBOBJS) 2>/dev/null || true