lucene-pylucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andi Vajda <va...@apache.org>
Subject Re: Can't build on Mavericks (different issue)
Date Fri, 28 Mar 2014 15:20:59 GMT

> On Mar 28, 2014, at 15:48, Mike McCormick <mccormick@runbox.com> wrote:
> 
> Hi Andi, thanks for your reply.  Not only was it compiling against Java 8 binaries, it
was using Java 6 headers.  I took a look at helpers/darwin.py and noticed two problems with
it:
> 
> 1. It uses /usr/libexec/java_home to find the JDK and does not observe the JAVA_HOME
environment variable.  I have Apple’s JDK 6 plus Oracle’s JDK 7 and 8 on my system and
/usr/libexec/java_home always return the path to Java 8.
> 
> 2. JAVAHOME and JAVAFRAMEWORKS end up pointing to two different versions.  As I mentioned
above, java_home will return the path to the latest JDK and JAVAFRAMEWORKS is hard-coded to
look in Apple’s path which is for JDK 6 headers.  The headers for Oracle’s JDKs are in
$JAVA_HOME/include.
> 
> I modified setup.py to just use my JDK 7 installation.  The two modules compile the same
as before, and the linker still dies.  I set JCC_LDFLAGS=-v and got this:

It is most deterministic to set the variables controlling which version of everything is used.
It us also important to use the same compiler (gcc vs clang) that was used to build your version
of python.

> Thread model: posix
> "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld"
-demangle -dynamic -dylib -dylib_compatibility_version 2.19 -dylib_current_version 2.19 -arch
x86_64 -dylib_install_name @rpath/libjcc.dylib -macosx_version_min 10.9.0 -undefined dynamic_lookup
-undefined dynamic_lookup -o build/lib.macosx-10.9-intel-2.7/libjcc.dylib -x build/temp.macosx-10.9-intel-2.7/jcc/sources/jcc.o
build/temp.macosx-10.9-intel-2.7/jcc/sources/JCCEnv.o -S -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/lib/darwin/libclang_rt.osx.a
> ld: internal error: atom not found in symbolIndex(__ZN7JNIEnv_13CallIntMethodEP8_jobjectP10_jmethodIDz)
for architecture x86_64

You still have a mismatch somewhere.
But I can't see what version of the jdk you're linking against ?

Andi..

> clang: error: linker command failed with exit code 1 (use -v to see invocation)
> error: command 'g++' failed with exit status 1
> 
> CallIntMethod smells like it should be part of a JDK library, correct?  Should there
be another library referenced in that linker command that isn’t?  My other thought is that
maybe something is being deadstripped.
> 
> M
> 
>> On Mar 28, 2014, at 3:05 AM, Andi Vajda <vajda@apache.org> wrote:
>> 
>> 
>>> On Mar 28, 2014, at 5:58, Mike McCormick <mccormick@runbox.com> wrote:
>>> 
>>> Hi folks,
>>> 
>>> I am trying to build jcc to install JModelica.  The linking process dies:
>>> 
>>> building 'jcc' extension
>>> gcc -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -Qunused-arguments -dynamiclib
-D_jcc_lib -DJCC_VER="2.19" -I/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/include
-I/Library/Java/JavaVirtualMachines/jdk1.8.0
>> 
>> You're building against Java 8 which has not yet been tested with jcc. It may work,
or not.
>> 
>>> .jdk/Contents/Home/include/darwin -I_jcc -Ijcc/sources -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
-c jcc/sources/jcc.cpp -o build/temp.macosx-10.9-intel-2.7/jcc/sources/jcc.o -DPYTHON -fno-strict-aliasing
-Wno-write-strings
>>> gcc -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -Qunused-arguments -dynamiclib
-D_jcc_lib -DJCC_VER="2.19" -I/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/include
-I/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/include/darwin -I_jcc -Ijcc/sources
-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c jcc/sources/JCCEnv.cpp
-o build/temp.macosx-10.9-intel-2.7/jcc/sources/JCCEnv.o -DPYTHON -fno-strict-aliasing -Wno-write-strings
>>> g++ -Wl,-x -dynamiclib -undefined dynamic_lookup -Qunused-arguments build/temp.macosx-10.9-intel-2.7/jcc/sources/jcc.o
build/temp.macosx-10.9-intel-2.7/jcc/sources/JCCEnv.o -o build/lib.macosx-10.9-intel-2.7/libjcc.dylib
-L/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib -ljava -L/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/server
-ljvm -Wl,-rpath -Wl,/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib
-Wl,-rpath -Wl,/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/server
-Wl,-S -install_name @rpath/libjcc.dylib -current_version 2.19 -compatibility_version 2.19
>>> ld: internal error: atom not found in symbolIndex(__ZN7JNIEnv_13CallIntMethodEP8_jobjectP10_jmethodIDz)
for architecture x86_64
>>> clang: error: linker command failed with exit code 1 (use -v to see invocation)
>>> error: command 'g++' failed with exit status 1
>>> bash-3.2# 
>>> 
>>> I tried using Xcode and GCC and both stop with the same error at the same point
in the process.  Any idea how to approach troubleshooting this?
>> 
>> The linker error could be due to a mismatch between header files version and jre
library version. Also, jdk 8 is still untested against jcc.
>> 
>> Andi..
>> 
>>> The packages available via pip and easy_install do the same thing.m
>>> 
>>> M
>> 
> 

Mime
View raw message