minoca / os

Minoca operating system
Other
2.71k stars 232 forks source link

Linking - testmm: Fails #164

Closed bobrossrtx closed 3 years ago

bobrossrtx commented 3 years ago

I'm trying to compile the Operating system, I have installed the Linux tool-chain, everything is setup just fine, so I just run make and it fails. Everything seems to compile just fine, but when it gets to linking testmm, it just gets a whole tonne of multiple definition errors. Here is what I get:

Linking - testmm
/usr/bin/ld: stubs.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: testmm.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: testmdl.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: testuva.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: block.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: imgsec.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: init.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: invipi.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: iobuf.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: load.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: mdl.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: paging.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: physical.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: kpools.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: virtual.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
/usr/bin/ld: fault.o:/home/owen/git/minoca/os/kernel/mm/testmm/../mmp.h:350: multiple definition of `MmVirtualMemoryWarningEvent'; x86/mapping.o:/home/owen/git/minoca/os/kernel/mm/testmm/../x86/../mmp.h:350: first defined here
collect2: error: ld returned 1 exit status
make[4]: *** [/home/owen/git/minoca/os/minoca.mk:465: testmm] Error 1
make[3]: *** [/home/owen/git/minoca/os/minoca.mk:387: testmm] Error 2
make[2]: *** [/home/owen/git/minoca/os/minoca.mk:387: mm] Error 2
make[1]: *** [/home/owen/git/minoca/os/minoca.mk:387: kernel] Error 2
make: *** [/home/owen/git/minoca/os/minoca.mk:93: /home/owen/git/minoca/x86dbg/obj/os] Error 2

Any insight on what I could be missing, or doing wrong?

evangreen commented 3 years ago

I think there's an extern missing. Can you try the following change in kernel/mm/mmp.h:

@@ -347,7 +346,7 @@ extern PKEVENT MmPhysicalMemoryWarningEvent;
 // a significant change in the amount of allocated virtual memory.
 //

-PKEVENT MmVirtualMemoryWarningEvent;
+extern PKEVENT MmVirtualMemoryWarningEvent;

 //
 // The virtual allocator keeps track of which VA space is in use and which is
evangreen commented 3 years ago

This should be fixed with a7deee4a804e33a5e235cf90e63520778468aa82, let me know if you're still seeing issues.