I've found that if your code is written in C++ - like the overlay example - you need to add 'extern "C"' to the beginning of the const definition of the module header. Otherwise the compiler/binutils will end up stripping the symbols. Try using -objdump -T on the .so to make sure you have the symbol.
Penguin of Death wrote: > I'm running into a similar issue trying to get sensors to work on a > htc_dream build (the Dev phone, "trout") of a recently updated Android > distribution... > > It looks like the error is being generated by a path built in 'mydroid/ > hardware/libhardware/hardware.c', right here: > > mydroid/hardware/libhardware/hardware.c:152 hw_get_module() > snprintf(path, sizeof(path), "%s/%s.%s.so", > HAL_LIBRARY_PATH, id, variant); > > ... with this defined earlier in the file: > > mydroid/hardware/libhardware/hardware.c:33 > #define HAL_LIBRARY_PATH "/system/lib/hw" > > Running logcat while the phone boots gives these errors: > > ... > W( 61) load: module=/system/lib/hw/copybit.trout.so error=Cannot > find library (HAL) > ... > W( 61) load: module=/system/lib/hw/overlay.trout.so error=Cannot > find library (HAL) > ... > W( 61) load: module=/system/lib/hw/sensors.trout.so error=Cannot > find library (HAL) > ... > > > I inserted some debugging lines in a couple of places, then tried to > run an APK which checks for available sensors, which spit this out: > > D( 295) hw_get_module: module=sensors (HAL) > D( 295) linker: loading /system/lib/hw/sensors.trout.so () > W( 295) load: module=/system/lib/hw/sensors.trout.so error=Cannot > find library (HAL) > D( 295) hal_module_info_get: X id=sensors hmi=0x0 status=-22 (HAL) > D( 295) found sensor: null, handle=0 (SensorManager) > > So, even though the sensors physically exist, any applications see > NULL: no sensors available. > > Looking earlier in the logs, it looks like something is trying to add > sensors using the same missing library: > > I( 61) New device: path=/dev/input/event4 name=compass id=0x10000 > (of 0x1) index=1 fd=45 classes=0x0 (EventHub) > D( 61) hw_get_module: module=sensors (HAL) > D( 61) linker: loading /system/lib/hw/sensors.trout.so () > W( 61) load: module=/system/lib/hw/sensors.trout.so error=Cannot > find library (HAL) > D( 61) hal_module_info_get: X id=sensors hmi=0x0 status=-22 (HAL) > D( 61) found sensor: null, handle=0 (SensorManager) > ... > > The directory '/system/lib/hw' doesn't exist, nor do any "*.trout.so" > files. > > Are these libraries supposed to be there? How should they be > generated? > > > > On Feb 3, 5:47 pm, sal de la tierra <salan...@gmail.com> wrote: > >> I am looking to fill in the sensor_default for the HAL layer. I have >> several different kernel drivers for different sensor devices >> (accelerometer, magnetometer, proximity, etc) and I am trying to get >> them all to register. When I have done the build and try to invoke the >> sensor manager, I get the following messages in the logcat: >> >> E/HAL ( 298): load: module=/system/lib/hw/sensors.default.so >> error=Cannot find library >> D/SensorManager( 298): found sensor: null, handle=0 >> >> I am trying to figure out where the /system/lib/hw/sensors.default.so >> comes from and how to include it into my build. Any suggestions would >> be appreciated. >> > > > --~--~---------~--~----~------------~-------~--~----~ unsubscribe: android-porting+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-porting -~----------~----~----~----~------~----~------~--~---