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

Denis 'GNUtoo' Carikli GNUtoo at no-log.org
Thu Mar 31 22:12:59 UTC 2011


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>
---
 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