undefined reference error during the build of openjdk
Feng Xian
feng.xian at gmail.com
Thu Jan 31 07:41:53 UTC 2008
Your approach really helps. I turned on verbose mode and found that the
build failed due to some warnings of "warning: deprecated conversion from
string constant to 'char*'"and my gcc 4.2 treated these warnings as errors.
I followed the solution in http://weblogs.java.net/blog/simonis/.
Following is the solution of the post:
"Internally, SUN apparently still uses gcc 3.2.2 to build the JDK and with
gcc 3.2.2 there seem to be no warnings during the build so they decided to
use the -Werror option on Linux which instructs gcc to treat every compiler
warning as error. If you however want to build with a gcc version higher
than 3.2.2 (and you'll probably want to do this on a newer Linux
distribution) you'll either have to use precompiled headers (
USE_PRECOMPILED_HEADER=true) or comment the line WARNINGS_ARE_ERRORS =
-Werror in the file
hotspot/build/linux/makefiles/gcc.make<http://hg.openjdk.java.net/jdk7/jdk7//hotspot/raw-file/jdk7-b24/build/linux/makefiles/gcc.make>(see
Bug
6469784 <http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6469784>)."
Now it seems that the problem was gone. Thanks!
On 1/30/08, Keith McGuigan <Keith.McGuigan at sun.com> wrote:
>
>
> 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.
>
>
--
Addr: 1025N, 23rd str, APT 33,
Lincoln, NE, 68503
Phone: (402)310-9826
WWW: cse.unl.edu/~fxian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/build-dev/attachments/20080131/ecac30e7/attachment.htm>
More information about the build-dev
mailing list