PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Makefile


WinSysCompany
26.02.2011, 22:37
Hallo ich habe folgendes Problemm : MAKEFILE (http://www.lowlevel.eu/wiki/Teil_4_-_Hello_World)

Ich habe jetzt die Datein start.S
.section .text

// Init ist eine Funktion aus init.c
.extern init

#define MB_MAGIC 0x1badb002
#define MB_FLAGS 0x0
#define MB_CHECKSUM -(MB_MAGIC + MB_FLAGS)

// Der Multiboot-Header
.align 4
.int MB_MAGIC
.int MB_FLAGS
.int MB_CHECKSUM

// _start muss global sein, damit der Linker es findet und als Einsprungspunkt
// benutzen kann (alle Labels, die nicht global sind, sind nur in dieser Datei
// sichtbar)
.global _start
_start:
// Stack initialisieren
mov $kernel_stack, %esp

// C-Code aufrufen
call init

// Falls wir jemals aus init zurueckkommen sollten, gehen wir in eine
// Endlosschleife
jmp .

// 8 kB Stack fuer den Kernel. Das Label steht hinter dem freien Speicher,
// weil der Stack nach unten waechst
.section .bss
.space 8192
kernel_stack:init.c
void init(void)
{
const char hw[] = "Hello World!";
int i;
char* video = (char*) 0xb8000;

// C-Strings haben ein Nullbyte als Abschluss
for (i = 0; hw[i] != '\0'; i++) {

// Zeichen i in den Videospeicher kopieren
video[i * 2] = hw[i];

// 0x07 = Hellgrau auf Schwarz
video[i * 2 + 1] = 0x07;
}
}und makefile
SRCS = $(shell find -name '*.[cS]')
OBJS = $(addsuffix .o,$(basename $(SRCS)))

CC = gcc
LD = ld

ASFLAGS = -m32
CFLAGS = -m32 -Wall -g -fno-stack-protector -nostdinc
LDFLAGS = -melf_i386 -Ttext=0x100000

kernel: $(OBJS)
$(LD) $(LDFLAGS) -o $@ $^

%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $^

%.o: %.S
$(CC) $(ASFLAGS) -c -o $@ $^

clean:
rm $(OBJS)

.PHONY: cleanin einem Ordner
Die Programme GCC und LD sind per %PATH% ( "...;C:\crosstools\i586-elf\bin" ) erreichbar

Nun öffne ich die Eingabeafforderung
und gebe folgendes ein ... :
E:
cd E:\WinSysOS\datafile
makeaber es kommt :
Datei *.[cS] nicht gefunden
ld -melf_i386 -Ttext=0x100000 -o kernel
c:\crosstools\i586-elf\bin\ld.exe: no input files
make: *** [kernel] Error 1Was mach ich falsch ???


WinSysCompany
27.02.2011, 10:39
kann mir jemand sagen wie ich selber eine Makefile datei erstelle :confused:

schon mal Danke im vorraus :)

mnemonic
27.02.2011, 10:57
-> Verschoben nach "Sonstige Scriptsprachen"

AGGROStar1991
27.02.2011, 12:58
Also erstellen tust du es mit nem texteditor und nennst das was rauskommt denn "makefile". nutzt du keine IDE? idR können die dir das komplett abnehmen.
und bist du sicher das gcc und ld genau so heissen und nicht etwa i596-gcc oder so? das müsstest du prüfen.


mfg

WinSysCompany
28.02.2011, 19:46
Also erstellen tust du es mit nem texteditor und nennst das was rauskommt denn "makefile". nutzt du keine IDE? idR können die dir das komplett abnehmen.
und bist du sicher das gcc und ld genau so heissen und nicht etwa i596-gcc oder so? das müsstest du prüfen.


mfg

Bie Programme heissen wirklich gcc.exe und ld.exe ... :o:o:o

welche IDEs z.B. ?

WinSysCompany
28.02.2011, 20:12
ist die Makefile datei in Ordnung :confused:

nichts gegen Lowlevel :D
aber ich glaube es stimt was mit der Makefile datei nicht :o

achso noch eine Frage gans nebenbei was sind .rbuild-Datein :confused:

shell32.rbuild
<group>
<module name="shell32" type="win32dll" baseaddress="${BASEADDRESS_SHELL32}" installbase="system32" installname="shell32.dll" crt="msvcrt">
<autoregister infsection="OleControlDlls" type="Both" />
<importlibrary definition="shell32.spec" />
<include base="shell32">.</include>
<include base="recyclebin">.</include>
<include base="ReactOS">include/reactos/wine</include>
<define name="_SHELL32_" />
<define name="COM_NO_WINDOWS_H" />
<define name="_WINE" />
<redefine name="_WIN32_WINNT">0x600</redefine>
<library>wine</library>
<library>uuid</library>
<library>recyclebin</library>
<library>ntdll</library>
<library>advapi32</library>
<library>gdi32</library>
<library>user32</library>
<library>comctl32</library>
<library>comdlg32</library>
<library>shlwapi</library>
<library>ole32</library>
<library>version</library>
<library>devmgr</library>
<library>winspool</library>
<library>winmm</library>
<pch>precomp.h</pch>
<file>authors.c</file>
<file>autocomplete.c</file>
<file>brsfolder.c</file>
<file>changenotify.c</file>
<file>classes.c</file>
<file>clipboard.c</file>
<file>control.c</file>
<file>dataobject.c</file>
<file>dde.c</file>
<file>debughlp.c</file>
<file>desktop.c</file>
<file>dialogs.c</file>
<file>dragdrophelper.c</file>
<file>enumidlist.c</file>
<file>extracticon.c</file>
<file>folders.c</file>
<file>iconcache.c</file>
<file>pidl.c</file>
<file>regsvr.c</file>
<file>shell32_main.c</file>
<file>shellitem.c</file>
<file>shelllink.c</file>
<file>shellole.c</file>
<file>shellord.c</file>
<file>shellpath.c</file>
<file>shellreg.c</file>
<file>shellstring.c</file>
<file>shfldr_desktop.c</file>
<file>shfldr_fs.c</file>
<file>shfldr_mycomp.c</file>
<file>shfldr_mydocuments.c</file>
<file>shfldr_printers.c</file>
<file>shfldr_admintools.c</file>
<file>shfldr_netplaces.c</file>
<file>shfldr_fonts.c</file>
<file>shfldr_cpanel.c</file>
<file>shfldr_recyclebin.c</file>
<file>shlexec.c</file>
<file>shlfileop.c</file>
<file>shlfolder.c</file>
<file>shlfsbind.c</file>
<file>shlmenu.c</file>
<file>shlview.c</file>
<file>shpolicy.c</file>
<file>shv_def_cmenu.c</file>
<file>startmenu.c</file>
<file>stubs.c</file>
<file>ros-systray.c</file>
<file>fprop.c</file>
<file>drive.c</file>
<file>she_ocmenu.c</file>
<file>shv_item_new.c</file>
<file>folder_options.c</file>
<file>shell32.rc</file>
</module>
<module name="shobjidl_local_interface" type="idlinterface">
<file>shobjidl_local.idl</file>
</module>
</group>


diese Datei ist vom ReactOS (http://www.reactos.org/de/download.html) Sourcepack (http://prdownloads.sourceforge.net/reactos/ReactOS-0.3.12-REL-src.zip) und ich weeiss nicht wie ich die kopiliere :(

Pfad : ".\ReactOS-0.3.12-REL-src\dll\win32\shell32\shell32.rbuild"

AGGROStar1991
28.02.2011, 20:54
das makefile an sich ist in ordnung, definitiv, auf linux läufts imho ;) daher die vermutung mit gcc( weil ich kenn das makefile :P). ich vermute einfach mal das du etwas falsch machst (wahrsch typo im makefile, mit dem original läuft auf Fedora 14 und FreeBSD 6 beides fehlerfrei,mit deinem nicht) ;) rbuilds sind spezifische dateien von reactos soweit ich weiss, da gibts garantiert was auf der seite wie das geht.ganz nebenbei ein heisser tipp: vom abtippen lernt man nichts........

wann kommt endlich der tag wenn nicht nur anfänger ein OS schreiben wollen sondern leute die wenigstens mit ihren tools umgehen können? *seufz*

nebenbei können das alle IDEs, aber sowas sollte man schon zumindest selber anpassen...

mfg