On Tue, Dec 07, 2010 at 08:34:14PM +0300, Aleksej Saushev wrote:
Hello!
I'm trying to build VM from source and run into this:
Linking C executable squeakvm CMakeFiles/squeakvm.dir/tmp/local/squeak-vm/work/squeak-vm/platforms/Cross/vm/sqVirtualMachine.c.o: In function `sqGetInterpreterProxy': sqVirtualMachine.c:(.text+0x45e): undefined reference to `internalIsImmutable' sqVirtualMachine.c:(.text+0x468): undefined reference to `internalIsMutable' sqVirtualMachine.c:(.text+0x472): undefined reference to `primitiveFailFor' sqVirtualMachine.c:(.text+0x47c): undefined reference to `classAlien' sqVirtualMachine.c:(.text+0x486): undefined reference to `getStackPointer' sqVirtualMachine.c:(.text+0x490): undefined reference to `sendInvokeCallbackStackRegistersJmpbuf' sqVirtualMachine.c:(.text+0x49a): undefined reference to `reestablishContextPriorToCallback' sqVirtualMachine.c:(.text+0x4a4): undefined reference to `classUnsafeAlien' --- squeakvm ---
Going back in past, I've found that this was broken in r2203, which introduced references to these symbols which in turn were never defined.
Could anyone at least shed the light on what is going on?
Hi Aleksej,
Possibly you are compiling using the sources in platforms/unix/src. These are source files that were automatically generated from a VMMaker image at the time of the last official VM distribution. For this reason, they are out of date now with respect to the rest of the development platform sources. In this case, the platform source code is making references to things that are present in the up-to-date VMMaker sources, but that were not present at the time the platforms/unix/src/* files were created. This is the reason for the unresolved references in your build.
In order to build a VM with the latest sources, please also use the most recent VMMaker from SqueakSource, and use this to generate your own source files. Usually (though not necessarily always), the most recent version of VMMaker will contain the Smalltalk code that matches the most recent development sources in Subversion.
Having the generated sources in platforms/unix/src can be confusing, and there has been some discussion of moving the saved ./src files out of the main ./platforms directory tree in order to reduce confusion about this.
Dave