Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"size mismatch" and "not bound to a source node" errors when compiling on 64bit ubuntu precise #3

Closed
jgrevich opened this issue Oct 19, 2012 · 4 comments

Comments

@jgrevich
Copy link

Any idea how to get around this? Looks like the source sizes are 64bit whilst the tgt is 32.

I'm not sure how to handle the "not bound to a source node" error, any suggestions?

patching file gen-cpp/ozw_types.h
ruby create_server.rb --ozwroot=../open-zwave --thriftroot=/usr/local/include/thrift
Parsing:/home/jtv/ozw/Thrift4OZW/gen-cpp/RemoteManager_server.skeleton.cpp
    /home/jtv/ozw/open-zwave/cpp/src/Manager.h
RemoteManagerHandler: 137 public methods
OpenZWave::Manager:   143 public methods
  --//--  ignored :   8 methods
WARNING!!! method 'GetNodeNeighbors': Argument '_return._nodeNeighbors' size mismatch (src=192 tgt=8) - CHECK GENERATED CODE!
WARNING!!! method 'GetValueAsFloat': Argument '_return.o_value' size mismatch (src=64 tgt=32) - CHECK GENERATED CODE!
WARNING!!! method 'SetValue_Float': Argument '_value' size mismatch (src=64 tgt=32) - CHECK GENERATED CODE!
WARNING!!! method 'GetAssociations': Argument '_return.o_associations' size mismatch (src=192 tgt=8) - CHECK GENERATED CODE!
defining BeginControllerCommand_callback
WARNING!!! target argument '* _callback' not bound to a source node - needs patching...
WARNING!!! target argument 'void* _context' not bound to a source node - needs patching...
WARNING!!! method 'GetAllScenes': Argument '_return._sceneIds' size mismatch (src=192 tgt=8) - CHECK GENERATED CODE!
WARNING!!! method 'AddSceneValue_Float': Argument '_value' size mismatch (src=64 tgt=32) - CHECK GENERATED CODE!
WARNING!!! method 'SceneGetValueAsFloat': Argument '_return.o_value' size mismatch (src=64 tgt=32) - CHECK GENERATED CODE!
WARNING!!! method 'SetSceneValue_Float': Argument '_value' size mismatch (src=64 tgt=32) - CHECK GENERATED CODE!
WARNING!!! method 'GetDriverStatistics': Argument '_return._data' size mismatch (src=640 tgt=448) - CHECK GENERATED CODE!
Writing generated server (gen-cpp/RemoteManager_server.cpp)....
Done!
...
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_enumerate_add_match_subsystem'
collect2: ld returned 1 exit status
make: *** [ozwd] Error 1
@jgrevich
Copy link
Author

I get similar errors in 32-bit Ubuntu Precise:

WARNING!!! method 'GetNodeNeighbors': Argument '_return._nodeNeighbors' size mismatch (src=96 tgt=8) - CHECK GENERATED CODE!
WARNING!!! method 'GetValueAsFloat': Argument '_return.o_value' size mismatch (src=64 tgt=32) - CHECK GENERATED CODE!
WARNING!!! method 'SetValue_Float': Argument '_value' size mismatch (src=64 tgt=32) - CHECK GENERATED CODE!
WARNING!!! method 'GetAssociations': Argument '_return.o_associations' size mismatch (src=96 tgt=8) - CHECK GENERATED CODE!
defining BeginControllerCommand_callback
WARNING!!! target argument '* _callback' not bound to a source node - needs patching...
WARNING!!! target argument 'void* _context' not bound to a source node - needs patching...
WARNING!!! method 'GetAllScenes': Argument '_return._sceneIds' size mismatch (src=96 tgt=8) - CHECK GENERATED CODE!
WARNING!!! method 'AddSceneValue_Float': Argument '_value' size mismatch (src=64 tgt=32) - CHECK GENERATED CODE!
WARNING!!! method 'SceneGetValueAsFloat': Argument '_return.o_value' size mismatch (src=64 tgt=32) - CHECK GENERATED CODE!
WARNING!!! method 'SetSceneValue_Float': Argument '_value' size mismatch (src=64 tgt=32) - CHECK GENERATED CODE!
WARNING!!! method 'GetDriverStatistics': Argument '_return._data' size mismatch (src=608 tgt=448) - CHECK GENERATED CODE!

@jgrevich
Copy link
Author

I'm not sure if the above warnings are related to why it fails, but here is the part that is failing:

g++ -o ozwd -g -L/usr/lib/ -L/usr/local/lib -L/usr/local/lib/thrift -L../BoostStomp -Wl,-rpath=../open-zwave/cpp/lib/linux/ -Wl,-rpath=../BoostStomp -Wl,-rpath=/usr/local/lib  Main.o gen-cpp/RemoteManager.o gen-cpp/ozw_constants.o gen-cpp/ozw_types.o -lgnutls -ludev -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -lthrift -lbooststomp ../open-zwave/cpp/lib/linux/libopenzwave.so    
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_enumerate_scan_devices'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_new'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_list_entry_get_name'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_enumerate_get_list_entry'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_list_entry_get_next'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_device_new_from_syspath'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_unref'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_device_get_devnode'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_enumerate_unref'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_device_new_from_devnum'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_enumerate_new'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_device_get_parent_with_subsystem_devtype'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_device_unref'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_device_get_sysattr_value'
../open-zwave/cpp/lib/linux/libopenzwave.so: undefined reference to `udev_enumerate_add_match_subsystem'
collect2: ld returned 1 exit status
make: *** [ozwd] Error 1

@ekarak
Copy link
Member

ekarak commented Oct 20, 2012

you need to add -ludev (package libudev-dev in debian-based distros) so as to link against the udev library, which is the Linux device management subsystem (see: http://en.wikipedia.org/wiki/Udev )

@jgrevich
Copy link
Author

@ekarak Thanks for the pointer, I got it working.

-ludev was there but needed to be linked at the end of the compile statement for me:

g++ -o ozwd -g -L/usr/lib/ -L/usr/local/lib -L/usr/local/lib/thrift -L../BoostStomp -Wl,-rpath=../open-zwave/cpp/lib/linux/ -Wl,-rpath=../BoostStomp -Wl,-rpath=/usr/local/lib  Main.o gen-cpp/RemoteManager.o gen-cpp/ozw_constants.o gen-cpp/ozw_types.o -lgnutls -lboost_thread -lboost_program_options -lboost_filesystem -lboost_system -lthrift -lbooststomp ../open-zwave/cpp/lib/linux/libopenzwave.so -ludev

Compiled on 64bit Ubuntu Precise. I assume the same for 32-bit, regardless I'll test it out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants