forked from KolibriOS/kolibrios
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