mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-24 15:46:49 +03:00
Added an example of how to make PE DLL libraries
git-svn-id: svn://kolibrios.org@8757 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
94803c76d8
commit
19eaae5459
38
contrib/sdk/sources/hello_dll/Makefile
Normal file
38
contrib/sdk/sources/hello_dll/Makefile
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
LIBRARY= libhello
|
||||||
|
|
||||||
|
CC = kos32-gcc
|
||||||
|
AR = kos32-ar
|
||||||
|
LD = kos32-ld
|
||||||
|
STRIP = kos32-strip
|
||||||
|
|
||||||
|
INSTALLDIR ?= /home/autobuild/tools/win32/lib
|
||||||
|
|
||||||
|
CFLAGS = -UWIN32 -UWindows -U_WINDOWS -U_WIN32 -U__WIN32__ -c -O2 -fno-ident -fomit-frame-pointer
|
||||||
|
|
||||||
|
LDFLAGS=$(LDFLAGS_CMD)
|
||||||
|
LDFLAGS+= -shared -s -T dll.lds --entry _DllStartup --image-base=0
|
||||||
|
LDFLAGS+= --out-implib $(LIBRARY).dll.a
|
||||||
|
ARFLAGS:= crs
|
||||||
|
INCLUDES= -I. -I../newlib/libc/include
|
||||||
|
LIBS:= -ldll -lc.dll
|
||||||
|
|
||||||
|
SOURCES = libhello.c
|
||||||
|
OBJECTS = $(patsubst %.c, %.o, $(SOURCES))
|
||||||
|
|
||||||
|
all:$(LIBRARY).a $(LIBRARY).dll
|
||||||
|
|
||||||
|
$(LIBRARY).a: $(OBJECTS) Makefile
|
||||||
|
$(AR) $(ARFLAGS) $(LIBRARY).a $(OBJECTS)
|
||||||
|
mv -f $(LIBRARY).a $(INSTALLDIR)
|
||||||
|
|
||||||
|
$(LIBRARY).dll: libhello.def $(OBJECTS) Makefile
|
||||||
|
$(LD) $(LDFLAGS) -o $@ libhello.def $(OBJECTS) $(LIBS)
|
||||||
|
$(STRIP) $@
|
||||||
|
#mv -f $(LIBRARY).dll.a $(INSTALLDIR)
|
||||||
|
|
||||||
|
|
||||||
|
%.o : %.c Makefile
|
||||||
|
$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -o $@ $<
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f *.o
|
26
contrib/sdk/sources/hello_dll/hello_test/Makefile
Normal file
26
contrib/sdk/sources/hello_dll/hello_test/Makefile
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
CC = kos32-gcc
|
||||||
|
LD = kos32-ld
|
||||||
|
|
||||||
|
SDK_DIR:= $(abspath ../../../)
|
||||||
|
|
||||||
|
LDFLAGS = -static -S -Tapp-dynamic.lds --image-base 0
|
||||||
|
|
||||||
|
CFLAGS = -c -fno-ident -O2 -fomit-frame-pointer -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32
|
||||||
|
|
||||||
|
INCLUDES= -I $(SDK_DIR)/sources/newlib/libc/include
|
||||||
|
LIBPATH:= -L $(SDK_DIR)/lib
|
||||||
|
|
||||||
|
SOURCES = hello.c \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
|
||||||
|
OBJECTS = $(patsubst %.c, %.o, $(SOURCES))
|
||||||
|
|
||||||
|
default: hello
|
||||||
|
|
||||||
|
hello: $(OBJECTS) Makefile
|
||||||
|
$(LD) $(LDFLAGS) $(LIBPATH) -o hello $(OBJECTS) -lgcc -lc.dll -lhello.dll
|
||||||
|
objcopy hello -O binary
|
||||||
|
|
||||||
|
%.o : %.c Makefile $(SOURCES)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $<
|
9
contrib/sdk/sources/hello_dll/hello_test/hello.c
Normal file
9
contrib/sdk/sources/hello_dll/hello_test/hello.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
extern void hello();
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
hello();
|
||||||
|
return 0;
|
||||||
|
};
|
5
contrib/sdk/sources/hello_dll/libhello.c
Normal file
5
contrib/sdk/sources/hello_dll/libhello.c
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
void hello(){
|
||||||
|
printf("Hello world!\n");
|
||||||
|
}
|
2
contrib/sdk/sources/hello_dll/libhello.def
Normal file
2
contrib/sdk/sources/hello_dll/libhello.def
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
EXPORTS
|
||||||
|
hello
|
Loading…
Reference in New Issue
Block a user