undefined reference error during the build of openjdk
Keith McGuigan
Keith.McGuigan at Sun.COM
Wed Jan 30 14:40:37 UTC 2008
Feng-
As others have said, make sure you have the right sources. If this
happens again, though, you may have to do some debugging in the build.
The referenced symbol ought to be defined in the verifier.o file.
Either it's not defined in there, or that file is not getting linked
into libjvm.so. Not sure exactly how to turn on verbose mode from the
command line, but in the Hotspot makefiles if VERBOSE=y is set, it will
show the commands as they are executed. Use that and take a look at the
object files with 'nm' (maybe combined with c++filt) to try to track
down where exactly the problem is.
You'll probably want to do a clean build too, just to make sure it's not
a problem with old or corrupted object files.
--
- Keith
Feng Xian wrote:
> Hi, I downloaded a most recent version of OpenJDK and tried to install
> it on a 32-bit Linux platform. But the build failed with an error of
> "/home/dli/openjdk7/build/linux-i586/hotspot/outputdir/linux_i486_compiler2/product/libjvm.so:
> undefined reference to `Verifier::verify(instanceKlassHandle,
> Verifier::Mode, Thread*)".
>
> Any help will be appreciated. Details of error message and "make sanity"
> output are followed:
>
> =================Screen snapshot =============================
> make[5]: Entering directory
> `/home/dli/openjdk7/build/linux-i586/hotspot/outputdir/linux_i486_compiler2/product'
> { \
> echo Linking launcher...; \
> \
> gcc -m32 -march=i586 -Xlinker -O1 -m32 -march=i586 -export-dynamic
> -L `pwd` -o gamma launcher.o -ljvm -lm -ldl -lpthread; \
> \
> }
> Linking launcher...
> /home/dli/openjdk7/build/linux-i586/hotspot/outputdir/linux_i486_compiler2/product/libjvm.so:
> undefined reference to `Verifier::verify(instanceKlassHandle,
> Verifier::Mode, Thread*)'
> collect2: ld returned 1 exit status
> make[5]: *** [gamma] Error 1
> make[5]: Leaving directory
> `/home/dli/openjdk7/build/linux-i586/hotspot/outputdir/linux_i486_compiler2/product'
> make[4]: *** [the_vm] Error 2
> make[4]: Leaving directory
> `/home/dli/openjdk7/build/linux-i586/hotspot/outputdir/linux_i486_compiler2/product'
> make[3]: *** [product] Error 2
> make[3]: Leaving directory
> `/home/dli/openjdk7/build/linux-i586/hotspot/outputdir'
> make[2]: *** [generic_build2] Error 2
> make[2]: Leaving directory `/home/dli/openjdk7/hotspot/make'
> make[1]: *** [product] Error 2
> make[1]: Leaving directory `/home/dli/openjdk7/hotspot/make'
> make: *** [hotspot-build] Error 2
> =============================================
>
> Below is "make sanity" message.
>
> ===============Output of make sanity==============
> (cd ./deploy/make && \
> make sanity JDK_TOPDIR=/home/dli/openjdk7/jdk
> JDK_MAKE_SHARED_DIR=/home/dli/openjdk7/jdk/make/common/shared
> EXTERNALSANITYCONTROL=true TARGET_CLASS_VERSION=5
> MILESTONE=Frame-Pointer BUILD_NUMBER=Dli JDK_BUILD_NUMBER=Dli
> FULL_VERSION=1.7.0-Frame-Pointer-Dli PREVIOUS_JDK_VERSION=1.6.0
> JDK_VERSION=1.7.0 JDK_MKTG_VERSION=7 JDK_MAJOR_VERSION=1
> JDK_MINOR_VERSION=7 JDK_MICRO_VERSION=0 ARCH_DATA_MODEL=32
> COOKED_BUILD_NUMBER=Dli ANT_HOME="/home/dli/ant"
> FINDBUGS_HOME="/home/dli/findbugs-1.3.0"
> ALT_OUTPUTDIR=/home/dli/openjdk7/build/linux-i586 )
> make[1]: Entering directory `/home/dli/openjdk7/deploy/make'
> make[1]: Leaving directory `/home/dli/openjdk7/deploy/make'
> make[1]: Entering directory `/home/dli/openjdk7/jdk/make'
> make[1]: Leaving directory `/home/dli/openjdk7/jdk/make'
>
> Build Machine Information:
> build machine = terryxian.unl.edu <http://terryxian.unl.edu>
>
> Build Directory Structure:
> CWD = /home/dli/openjdk7
> TOPDIR = .
> CONTROL_TOPDIR = .
> LANGTOOLS_TOPDIR = ./langtools
> JAXP_TOPDIR = ./jaxp
> JAXWS_TOPDIR = ./jaxws
> CORBA_TOPDIR = ./corba
> HOTSPOT_TOPDIR = ./hotspot
> JDK_TOPDIR = ./jdk
> DEPLOY_TOPDIR = ./deploy
> INSTALL_TOPDIR = ./install
>
> Build Directives:
> BUILD_LANGTOOLS = false
> BUILD_JAXP = true
> BUILD_JAXWS = true
> BUILD_CORBA = true
> BUILD_HOTSPOT = true
> BUILD_JDK = true
> BUILD_DEPLOY = true
> BUILD_INSTALL = false
>
> Hotspot Settings:
> HOTSPOT_BUILD_JOBS =
> HOTSPOT_OUTPUTDIR =
> /home/dli/openjdk7/build/linux-i586/hotspot/outputdir
> HOTSPOT_EXPORT_PATH =
> /home/dli/openjdk7/build/linux-i586/hotspot/import
>
> Bootstrap Settings:
> BOOTDIR = /home/dli/jdk1.6.0_03
> ALT_BOOTDIR = /home/dli/jdk1.6.0_03
> BOOT_VER = 1.6 [requires at least 1.5]
> OUTPUTDIR = /home/dli/openjdk7/build/linux-i586
> ALT_OUTPUTDIR = /home/dli/openjdk7/build/linux-i586
> ABS_OUTPUTDIR = /home/dli/openjdk7/build/linux-i586
>
> Build Tool Settings:
> SLASH_JAVA = /NOT-SET
> ALT_SLASH_JAVA =
> VARIANT = OPT
> JDK_DEVTOOLS_DIR = /home/dli/openjdk7
> ALT_JDK_DEVTOOLS_DIR = /home/dli/openjdk7
> ANT_HOME = /home/dli/ant
> FINDBUGS_HOME = /home/dli/findbugs-1.3.0
> UNIXCOMMAND_PATH = /bin/
> ALT_UNIXCOMMAND_PATH =
> COMPILER_PATH = /usr/bin/
> ALT_COMPILER_PATH =
> DEVTOOLS_PATH = /usr/bin/
> ALT_DEVTOOLS_PATH = /usr/bin
> UNIXCCS_PATH = /usr/ccs/bin/
> ALT_UNIXCCS_PATH =
> USRBIN_PATH = /usr/bin/
> ALT_USRBIN_PATH =
> GCC29_COMPILER_PATH = /home/dli/openjdk7/linux/gcc29/usr/
> ALT_GCC29_COMPILER_PATH =
> COMPILER_NAME = GCC
> COMPILER_VERSION =
> CC_VER = 3.4 [requires at least 3.2]
> ZIP_VER = 2.3 [requires at least 2.2]
> UNZIP_VER = 5.51 [requires at least 5.12]
> ANT_VER = 1.7 [requires at least 1.6.3]
> FINDBUGS_VER = 1.3 [requires at least 1.1]
> TEMPDIR = /home/dli/openjdk7/build/linux-i586/tmp
>
> Build Directives:
> OPENJDK =
> USE_HOTSPOT_INTERPRETER_MODE =
> PEDANTIC =
> DEV_ONLY = true
> NO_DOCS =
> NO_IMAGES =
> TOOLS_ONLY =
> INSANE = true
> COMPILE_APPROACH = parallel
> PARALLEL_COMPILE_JOBS = 2
> ALT_PARALLEL_COMPILE_JOBS =
> FASTDEBUG =
> COMPILER_WARNINGS_FATAL = false
> COMPILER_WARNING_LEVEL =
> INCREMENTAL_BUILD = false
> CC_HIGHEST_OPT = -O3
> CC_HIGHER_OPT = -O3
> CC_LOWER_OPT = -O2
> CXXFLAGS = -O2 -fPIC -DCC_NOEX -W -Wall -Wno-unused
> -Wno-parentheses -fno-omit-frame-pointer -D_LITTLE_ENDIAN
> CFLAGS = -O2 -fno-strict-aliasing -fPIC -W -Wall -Wno-unused
> -Wno-parentheses -fno-omit-frame-pointer -D_LITTLE_ENDIAN
> BOOT_JAVA_CMD = /home/dli/jdk1.6.0_03/bin/java -client -Xmx344m
> -Xms128m -XX:PermSize=32m -XX:MaxPermSize=160m
> BOOT_JAVAC_CMD = /home/dli/jdk1.6.0_03/bin/javac
> -J-XX:ThreadStackSize=768 -J-client -J-Xmx344m -J-Xms128m
> -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -encoding ascii
> BOOT_JAR_CMD = /home/dli/jdk1.6.0_03/bin/jar
> BOOT_JARSIGNER_CMD = /home/dli/jdk1.6.0_03/bin/jarsigner
> JAVAC_CMD = /home/dli/jdk1.6.0_03/bin/javac -J-XX:ThreadStackSize=768
> -J-client -J-Xmx344m -J-Xms128m -J-XX:PermSize=32m
> -J-XX:MaxPermSize=160m -source 1.5 -target 5 -encoding ascii
> -Xbootclasspath:/home/dli/openjdk7/build/linux-i586/classes
> JAVAH_CMD = /home/dli/jdk1.6.0_03/bin/javah -bootclasspath
> /home/dli/openjdk7/build/linux-i586/classes
> JAVADOC_CMD = /home/dli/jdk1.6.0_03/bin/javadoc -J-client -J-Xmx344m
> -J-Xms128m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m
>
> Build Platform Settings:
> USER = dli
> PLATFORM = linux
> ARCH = i586
> LIBARCH = i386
> ARCH_FAMILY = i586
> ARCH_DATA_MODEL = 32
> ARCHPROP = i386
> LINUX_VERSION = 3 (Heidelberg)
> ALSA_VERSION = 1.0.6
> OS_VERSION = 2.6.17 [requires at least 2.4.9-e.3]
> OS_NAME = linux
> TEMP_FREE_SPACE = 2507836
> FREE_SPACE = 2507836
> MB_OF_MEMORY = 472
>
> GNU Make Settings:
> MAKE = make
> MAKE_VER = 3.80 [requires at least 3.78]
> MAKECMDGOALS = sanity
> MAKEFLAGS = w
> SHELL = /bin/sh
>
> Target Build Versions:
> JDK_VERSION = 1.7.0
> MILESTONE = Frame-Pointer
> RELEASE = 1.7.0-Frame-Pointer
> FULL_VERSION = 1.7.0-Frame-Pointer-Dli
> BUILD_NUMBER = Dli
>
> External File/Binary Locations:
> USRJDKINSTANCES_PATH = /opt/java
> BUILD_JDK_IMPORT_PATH = /NOT-SET/re/jdk/1.7.0/promoted/latest/binaries
> ALT_BUILD_JDK_IMPORT_PATH =
> JDK_IMPORT_PATH = /home/dli/jdk1.6.0_03
> ALT_JDK_IMPORT_PATH = /home/dli/jdk1.6.0_03
> LANGTOOLS_DIST =
> ALT_LANGTOOLS_DIST =
> CORBA_DIST = /home/dli/openjdk7/build/linux-i586/corba/dist
> ALT_CORBA_DIST = /home/dli/openjdk7/build/linux-i586/corba/dist
> JAXP_DIST = /home/dli/openjdk7/build/linux-i586/jaxp/dist
> ALT_JAXP_DIST = /home/dli/openjdk7/build/linux-i586/jaxp/dist
> JAXWS_DIST = /home/dli/openjdk7/build/linux-i586/jaxws/dist
> ALT_JAXWS_DIST = /home/dli/openjdk7/build/linux-i586/jaxws/dist
> HOTSPOT_DOCS_IMPORT_PATH = /NO_DOCS_DIR
> ALT_HOTSPOT_DOCS_IMPORT_PATH =
> HOTSPOT_IMPORT_PATH = /home/dli/openjdk7/build/linux-i586/hotspot/import
> ALT_HOTSPOT_IMPORT_PATH =
> /home/dli/openjdk7/build/linux-i586/hotspot/import
> HOTSPOT_CLIENT_PATH =
> /home/dli/openjdk7/build/linux-i586/hotspot/import/jre/lib/i386/client
> ALT_HOTSPOT_CLIENT_PATH =
> HOTSPOT_SERVER_PATH =
> /home/dli/openjdk7/build/linux-i586/hotspot/import/jre/lib/i386/server
> ALT_HOTSPOT_SERVER_PATH =
> CACERTS_FILE = /home/dli/openjdk7/jdk/src/share/lib/security/cacerts
> ALT_CACERTS_FILE =
> MOZILLA_HEADERS_PATH = /home/dli/openjdk7/share/plugin
> ALT_MOZILLA_HEADERS_PATH = /home/dli/openjdk7/share/plugin
> CUPS_HEADERS_PATH = /usr/include
> ALT_CUPS_HEADERS_PATH =
>
> OPENJDK Export Binary Plug Settings:
> PLUG_EXPORT_DIRNAME =
> PLUG_LIBRARY_NAMES =
>
>
> WARNING: You are building in 'INSANE' mode. You
> should not use this mode, and in fact,
> it may be removed at any time. If you
> have build problems as a result of using
> INSANE mode, then you should not expect
> assistance from anyone with the problems
> or consequences you experience.
>
> WARNING: You are not building the LANGTOOLS sources.
> Lang tools (javac) will be obtained from
> the location set in ALT_JDK_IMPORT_PATH.
>
> WARNING: You are not building the INSTALL sources.
> This will result in a development-only
> build of the JDK, lacking the installation bundles
>
> WARNING: Your build environment has the variable DEV_ONLY
> defined. This will result in a development-only
> build of the JDK, lacking the documentation
> build and installation bundles.
>
> WARNING: You are building in 'INSANE' mode. You
> should not use this mode, and in fact,
> it may be removed at any time. If you
> have build problems as a result of using
> INSANE mode, then you should not expect
> assistance from anyone with the problems
> or consequences you experience.
>
> WARNING: This machine appears to only have 472Mb of physical memory,
> builds on this machine could be slow.
>
> WARNING: The official linux builds use OS version 2.4.9-e.3.
> You appear to be using OS version 2.6.17.
>
> WARNING: The build is being done on Linux 3 (Heidelberg).
> The official linux builds use Linux Advanced Server,
> specifically Linux Advanced Server release 2.1AS.
> The version found was '2.6.17'.
>
> WARNING: The linux compiler is not version 3.2
> Specifically the GCC compiler.
> You appear to be using compiler version: 3.4
> The compiler was obtained from the following location:
> /usr/bin/
>
> WARNING: You are building in 'INSANE' mode. You
> should not use this mode, and in fact,
> it may be removed at any time. If you
> have build problems as a result of using
> INSANE mode, then you should not expect
> assistance from anyone with the problems
> or consequences you experience.
>
> WARNING: The BUILD_NUMBER needs to contain b[0-9][0-9]*. Currently
> BUILD_NUMBER=Dli.
> This has been known to cause build failures.
>
> WARNING: This machine appears to only have 472Mb of physical memory,
> builds on this machine could be slow.
>
> WARNING: The official linux builds use OS version 2.4.9-e.3.
> You appear to be using OS version 2.6.17.
>
> WARNING: The build is being done on Linux 3 (Heidelberg).
> The official linux builds use Linux Advanced Server,
> specifically Linux Advanced Server release 2.1AS.
> The version found was '2.6.17'.
>
> WARNING: The linux compiler is not version 3.2
> Specifically the GCC compiler.
> You appear to be using compiler version: 3.4
> The compiler was obtained from the following location:
> /usr/bin/
>
> INSANE mode requested.
> Sanity will not force a build termination, even with errors.
More information about the build-dev
mailing list