[ 
https://issues.apache.org/jira/browse/HADOOP-11975?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14550800#comment-14550800
 ] 

Colin Patrick McCabe commented on HADOOP-11975:
-----------------------------------------------

This should be handled by {{JNIFlags.cmake}}.

{code}
# If JVM_ARCH_DATA_MODEL is 32, compile all binaries as 32-bit.
# This variable is set by maven.
if (JVM_ARCH_DATA_MODEL EQUAL 32)
    # Force 32-bit code generation on amd64/x86_64, ppc64, sparc64
    if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_PROCESSOR MATCHES ".*64")
        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
        set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} -m32")
    endif ()
    if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR 
STREQUAL "amd64")
        # Set CMAKE_SYSTEM_PROCESSOR to ensure that find_package(JNI) will use
        # the 32-bit version of libjvm.so.
        set(CMAKE_SYSTEM_PROCESSOR "i686")
    endif ()
endif (JVM_ARCH_DATA_MODEL EQUAL 32)
{code}

You should investigate why this is not working for you.  Perhaps your 
architecture is not x86?  Or perhaps your JVM is not setting 
{{JVM_ARCH_DATA_MODEL}}?

> Native code needs to be built to match the 32/64 bitness of the JVM
> -------------------------------------------------------------------
>
>                 Key: HADOOP-11975
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11975
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: build
>    Affects Versions: 2.7.0
>         Environment: Solaris
>            Reporter: Alan Burlison
>            Assignee: Alan Burlison
>
> When building with a 64-bit JVM on Solaris the following error occurs at the 
> link stage of building the native code:
>      [exec] ld: fatal: file 
> /usr/jdk/instances/jdk1.8.0/jre/lib/amd64/server/libjvm.so: wrong ELF class: 
> ELFCLASS64
>      [exec] collect2: error: ld returned 1 exit status
>      [exec] make[2]: *** [target/usr/local/lib/libhadoop.so.1.0.0] Error 1
>      [exec] make[1]: *** [CMakeFiles/hadoop.dir/all] Error 2
> The compilation flags in the makefiles need to explicitly state if 32 or 64 
> bit code is to be generated, to match the JVM.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to