[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: libobjc2: clang not found?
From: |
David Chisnall |
Subject: |
Re: libobjc2: clang not found? |
Date: |
Tue, 28 May 2013 11:02:09 +0100 |
Hi,
On 28 May 2013, at 04:47, David Wetzel <address@hidden> wrote:
> WARNING: It is strongly recommended that you compile with clang
CMake will default to using whatever CC and CXX are set to. To explicitly
configure the compiler to use, you can add -DCMAKE_C_COMPILER=clang
-DCMAKE_CXX_COMPILER=clang++ on the CMake command line. See the INSTALL
document for more details...
> -- Using /usr/lib/libsupc++.a as the C++ runtime library
This is a bug. It should be rejecting .a and only finding the .so version. If
your system doesn't provide the .so, then you'll get libobjc and libobjcxx (you
can force it to use libstdc++.so or libc++.so as the runtime lib if you don't
mind forcing every ObjC program to link against the C++ standard library, but I
prefer to avoid this for non-ObjC++ code).
This should be fixed in trunk now.
> /Users/dave/projects/gnustep/libobjc2/trunk/block_to_imp.c: In function
> 'init_trampolines':
> /Users/dave/projects/gnustep/libobjc2/trunk/block_to_imp.c:43:2: warning:
> implicit declaration of function 'asprintf'
This should be fixed in trunk.
> /Users/dave/projects/gnustep/libobjc2/trunk/block_to_imp.c: In function
> 'imp_implementationWithBlock':
> /Users/dave/projects/gnustep/libobjc2/trunk/block_to_imp.c:81:11: warning:
> taking address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/block_to_imp.c:82:9: warning:
> taking address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/block_to_imp.c:86:11: warning:
> taking address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/block_to_imp.c:87:9: warning:
> taking address of expression of type 'void'
These are recent-gcc warnings and are safe to ignore.
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m: In function 'retain':
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:170:13: warning: taking
> address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:171:13: warning: taking
> address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m: In function 'release':
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:188:13: warning: taking
> address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:193:14: warning: taking
> address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:194:14: warning: taking
> address of expression of type 'void'
> In file included from /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:499:0:
> /Users/dave/projects/gnustep/libobjc2/trunk/hash_table.h: In function
> 'weak_ref_table_get_cell':
> /Users/dave/projects/gnustep/libobjc2/trunk/hash_table.h:343:3: warning:
> passing argument 1 of 'weak_ref_compare' discards qualifiers from pointer
> target type
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:467:12: note: expected 'id'
> but argument is of type 'const void *'
> /Users/dave/projects/gnustep/libobjc2/trunk/blocks_runtime.m: In function
> '_Block_copy':
> /Users/dave/projects/gnustep/libobjc2/trunk/blocks_runtime.m:244:18: warning:
> taking address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/blocks_runtime.m:248:14: warning:
> taking address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/blocks_runtime.m:258:24: warning:
> taking address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/blocks_runtime.m: In function
> '_Block_release':
> /Users/dave/projects/gnustep/libobjc2/trunk/blocks_runtime.m:276:6: warning:
> taking address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/blocks_runtime.m:280:11: warning:
> taking address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/hash_table.h:352:4: warning:
> passing argument 1 of 'weak_ref_compare' discards qualifiers from pointer
> target type
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:467:12: note: expected 'id'
> but argument is of type 'const void *'
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m: In function
> 'objc_storeWeak':
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:542:6: warning: taking
> address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:551:6: warning: taking
> address of expression of type 'void'
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m: In function
> 'objc_loadWeakRetained':
> /Users/dave/projects/gnustep/libobjc2/trunk/arc.m:642:6: warning: taking
> address of expression of type 'void'
These also all look safe to ignore (and, in some cases, spurious).
> [ 48%] Building CXX object CMakeFiles/objc.dir/objcxx_eh.cc.o
> Linking C shared library libobjc.so
> ld: /usr/lib/libsupc++.a(si_class_type_info.o): relocation R_X86_64_32S
> against `_ZTVN10__cxxabiv120__si_class_type_infoE' can not be used when
> making a shared object; recompile with -fPIC
> /usr/lib/libsupc++.a: could not read symbols: Bad value
This is caused by it trying to use libsupc++.a instead of libsupc++.so (which
you don't have) and should now be fixed.
Thanks for testing!
David
-- Sent from my STANTEC-ZEBRA