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 "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. 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 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*.
statikus ELF .a fájlokat generálni, sem linkelni velük.
Forrásként terjesztve 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 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. "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 Clang is configured in a way to directly create PE files, so the resulting library's name is **libuefi.dll.a*.
nor link with static ELF .a files.
Distributing as Source Distributing as Source
---------------------- ----------------------

View file

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