[oe] [PATCH] fix com.buglabs.bug.jni.* 'could not read symbols: Bad value' error

Stefan Schmidt stefan at datenfreihafen.org
Tue Apr 5 14:58:51 UTC 2011


Hello.

On Fri, 2011-04-01 at 00:12, Denis 'GNUtoo' Carikli wrote:
> Without that fix we have :
>   | .../sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/bin/ld: CharDevice.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
>   | CharDevice.o: could not read symbols: Bad value
>   | collect2: ld returned 1 exit status
>   | make: *** [libCommon.so] Error 1
> For the following recipes:
>   com.buglabs.bug.jni.common
>   com.buglabs.bug.jni.input
>   com.buglabs.bug.jni.lcd
>   com.buglabs.bug.jni.accelerometer
>   com.buglabs.bug.jni.libmatthew
>   com.buglabs.bug.jni.vonhippel
>   com.buglabs.bug.jni.camera
>   com.buglabs.bug.jni.rxtx
>   com.buglabs.bug.jni.gps
> 
> The solution was to pass -fPIC to the Makefile:
> For instance in com.buglabs.bug.jni.common/src/c the Makefile contained:
>   ALL_CXXFLAGS += $(INCLUDE) $(CXXFLAGS)
>   [...]
>   %.o: %.cpp
>           $(CXX) $(ALL_CXXFLAGS) -c -v $^ -o $@
> So passing -fPIC to CXXFLAGS solved all of the compilation failures but com.buglabs.bug.jni.camera
> com.buglabs.bug.jni.camera which failed that way:
>   | .../sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/bin/ld: Camera.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
>   | Camera.o: could not read symbols: Bad value
>   | collect2: ld returned 1 exit status
>   | make: *** [libCamera.so] Error 1
> Had that in its Makefile:
>   ALL_CCFLAGS += $(INCLUDE) $(CCFLAGS)
>   [...]
>   %.o: %.c
>           $(CC) $(ALL_CCFLAGS) -c $^ -o $@
> which corresponded to the compilation of bug_v4l.c
> Altough just setting CCFLAGS += "-fPIC" wasn't sufficent since CFLAGS was not exported
> (see run.do_jni_install script)
> So I had to export it.
> 
> Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo at no-log.org>

Acked-by: Stefan Schmidt <stefan at buglabs.net>

I also tested this against angstrom-2008 in the 2011.03-maintenance
branch without problems. Thanks for traacking this down Denis.

regards
Stefan Schmidt

> ---
>  recipes/buglabs-osgi/bug-osgi.inc                  |    4 +++-
>  recipes/buglabs-osgi/com.buglabs.bug.jni.camera.bb |    3 +++
>  2 files changed, 6 insertions(+), 1 deletions(-)
> 
> diff --git a/recipes/buglabs-osgi/bug-osgi.inc b/recipes/buglabs-osgi/bug-osgi.inc
> index b5b6e9f..75908bb 100644
> --- a/recipes/buglabs-osgi/bug-osgi.inc
> +++ b/recipes/buglabs-osgi/bug-osgi.inc
> @@ -8,7 +8,7 @@ inherit bug-java-library
>  JARFILENAME = "${BPN}.jar"
>  ALTJARFILENAMES = ""
>  
> -INC_PR = "r0"
> +INC_PR = "r1"
>  
>  SRCREV = "12839"
>  
> @@ -28,6 +28,8 @@ EXTRA_OEMAKE+="CLASSPATH_INCDIR=${STAGING_INCDIR}/classpath"
>  
>  JAVAC_OPTIONS="-source 1.6"
>  
> +CXXFLAGS += "-fPIC"
> +
>  do_compile() {
>    mkdir -p build
>    oe_makeclasspath cp -s ${DEPENDS} ${EXTRA_CP}
> diff --git a/recipes/buglabs-osgi/com.buglabs.bug.jni.camera.bb b/recipes/buglabs-osgi/com.buglabs.bug.jni.camera.bb
> index dced292..28a22e1 100644
> --- a/recipes/buglabs-osgi/com.buglabs.bug.jni.camera.bb
> +++ b/recipes/buglabs-osgi/com.buglabs.bug.jni.camera.bb
> @@ -2,6 +2,9 @@ require bug-osgi.inc
>  inherit jni-library
>  
>  PR = "${INC_PR}.7+svnr${SRCREV}"
> +
> +export CCFLAGS  += "-fPIC"
> +
>  FILES_${PN} += "${JNI_LIB_DIR}/libCamera.so"
>  
>  DEPENDS += "com.buglabs.common com.buglabs.bug.jni.common classpath jpeg virtual/kernel jpeg"
> -- 
> 1.7.0.4
> 




More information about the Openembedded-devel mailing list