Ticket #102 (closed defect: fixed)

Opened 6 years ago

Last modified 6 years ago

USRP Device does not compile on Fedora 7 with x86_64 install

Reported by: balister Owned by: cdietric
Priority: major Milestone: Release 0.8.0
Component: ossiecf Version: trunk
Keywords: Cc:

Description

USRP device is not compiling on x86_64 Fedora 7 install. It does compile on the i386 install.

Error message: g++ -DPACKAGE_NAME=\"USRP\" -DPACKAGE_TARNAME=\"usrp\" -DPACKAGE_VERSION=\"0.6.0\" -DPACKAGE_STRING=\"USRP\ 0.6.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"usrp\" -DVERSION=\"0.6.0\" -DHAVE_SYS_WAIT_H=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DHAVE_LIBOMNIORB4=1 -DHAVE_LIBOMNIDYNAMIC4=1 -DHAVE_OMNIORB4_CORBA_H=1 -DHAVE_LIBUSRP=1 -DHAVE_USRP_STANDARD_H=1 -DHAVE_USRP_DBID_H=1 -DHAVE_USRP_PRIMS_H=1 -DHAVE_LIBSTANDARDINTERFACES=1 -DHAVE_STANDARDINTERFACES_COMPLEXSHORT_H=1 -I. -Wall -g -O2 -I/usr/local/include -MT USRP.o -MD -MP -MF .deps/USRP.Tpo -c -o USRP.o test -f 'src/USRP.cpp' || echo './'src/USRP.cpp src/USRP.cpp: In constructor ‘USRP_i::USRP_i(char*, char*, char*)’: src/USRP.cpp:68: error: cannot allocate an object of abstract type ‘USRP_RX_Control_i’ src/USRP.h:50: note: because the following virtual functions are pure within ‘USRP_RX_Control_i’: /usr/local/include/standardinterfaces/Radio_Control_p.h:59: note: virtual void standardInterfaces_i::RX_Control_p::set_number_of_channels(CORBA::ULong) /usr/local/include/standardinterfaces/Radio_Control_p.h:60: note: virtual void standardInterfaces_i::RX_Control_p::get_number_of_channels(CORBA::ULong&) /usr/local/include/standardinterfaces/Radio_Control_p.h:63: note: virtual void standardInterfaces_i::RX_Control_p::get_gain_range(CORBA::ULong, float&, float&, float&) /usr/local/include/standardinterfaces/Radio_Control_p.h:64: note: virtual void standardInterfaces_i::RX_Control_p::set_gain(CORBA::ULong, float) /usr/local/include/standardinterfaces/Radio_Control_p.h:65: note: virtual void standardInterfaces_i::RX_Control_p::get_gain(CORBA::ULong, float&) /usr/local/include/standardinterfaces/Radio_Control_p.h:68: note: virtual void standardInterfaces_i::RX_Control_p::get_frequency_range(CORBA::ULong, float&, float&, float&) /usr/local/include/standardinterfaces/Radio_Control_p.h:69: note: virtual void standardInterfaces_i::RX_Control_p::set_frequency(CORBA::ULong, float) /usr/local/include/standardinterfaces/Radio_Control_p.h:70: note: virtual void standardInterfaces_i::RX_Control_p::get_frequency(CORBA::ULong, float&) /usr/local/include/standardinterfaces/Radio_Control_p.h:73: note: virtual void standardInterfaces_i::RX_Control_p::start(CORBA::ULong) /usr/local/include/standardinterfaces/Radio_Control_p.h:74: note: virtual void standardInterfaces_i::RX_Control_p::stop(CORBA::ULong) /usr/local/include/standardinterfaces/Radio_Control_p.h:80: note: virtual void standardInterfaces_i::RX_Control_p::set_decimation_rate(CORBA::ULong, CORBA::ULong) /usr/local/include/standardinterfaces/Radio_Control_p.h:82: note: virtual void standardInterfaces_i::RX_Control_p::get_decimation_range(CORBA::ULong, CORBA::ULong&, CORBA::ULong&, CORBA::ULong&) /usr/local/include/standardinterfaces/Radio_Control_p.h:85: note: virtual void standardInterfaces_i::RX_Control_p::set_data_packet_size(CORBA::ULong, CORBA::ULong) src/USRP.cpp:70: error: cannot allocate an object of abstract type ‘USRP_TX_Control_i’ src/USRP.h:89: note: because the following virtual functions are pure within ‘USRP_TX_Control_i’: /usr/local/include/standardinterfaces/Radio_Control_p.h:164: note: virtual void standardInterfaces_i::TX_Control_p::set_number_of_channels(CORBA::ULong) /usr/local/include/standardinterfaces/Radio_Control_p.h:165: note: virtual void standardInterfaces_i::TX_Control_p::get_number_of_channels(CORBA::ULong&) /usr/local/include/standardinterfaces/Radio_Control_p.h:168: note: virtual void standardInterfaces_i::TX_Control_p::get_gain_range(CORBA::ULong, float&, float&, float&) /usr/local/include/standardinterfaces/Radio_Control_p.h:169: note: virtual void standardInterfaces_i::TX_Control_p::set_gain(CORBA::ULong, float) /usr/local/include/standardinterfaces/Radio_Control_p.h:170: note: virtual void standardInterfaces_i::TX_Control_p::get_gain(CORBA::ULong, float&) /usr/local/include/standardinterfaces/Radio_Control_p.h:173: note: virtual void standardInterfaces_i::TX_Control_p::get_frequency_range(CORBA::ULong, float&, float&, float&) /usr/local/include/standardinterfaces/Radio_Control_p.h:174: note: virtual void standardInterfaces_i::TX_Control_p::set_frequency(CORBA::ULong, float) /usr/local/include/standardinterfaces/Radio_Control_p.h:175: note: virtual void standardInterfaces_i::TX_Control_p::get_frequency(CORBA::ULong, float&) /usr/local/include/standardinterfaces/Radio_Control_p.h:178: note: virtual void standardInterfaces_i::TX_Control_p::start(CORBA::ULong) /usr/local/include/standardinterfaces/Radio_Control_p.h:179: note: virtual void standardInterfaces_i::TX_Control_p::stop(CORBA::ULong) /usr/local/include/standardinterfaces/Radio_Control_p.h:185: note: virtual void standardInterfaces_i::TX_Control_p::set_interpolation_rate(CORBA::ULong, CORBA::ULong) /usr/local/include/standardinterfaces/Radio_Control_p.h:187: note: virtual void standardInterfaces_i::TX_Control_p::get_interpolation_range(CORBA::ULong, CORBA::ULong&, CORBA::ULong&, CORBA::ULong&) make: *** [USRP.o] Error 1 [balister@hildas_laptop USRP]$

Change History

Changed 6 years ago by balister

Changed 6 years ago by ttsou

64-bit long on x86_64 mismatches with 32-bit CORBA::Long, which causes the interfaces to differ resulting in the pure virtual functions. Works with i386 because the long type is defined as 32-bits. Quick and dirty fix is to convert 'long' types to 'int'. A better solution would be to use CORBA types when dealing with IDL interfaces.

Changed 6 years ago by balister

  • status changed from new to closed
  • resolution set to fixed

Fixed in r5855.

Needs run testing and 32 bit testing.

Note: See TracTickets for help on using tickets.