Slamtec / rplidar_sdk

Open source SDK for Slamtec RPLIDAR series products
BSD 2-Clause "Simplified" License
425 stars 253 forks source link

Compile errors on Ubuntu 22.04 #78

Open c1505 opened 2 years ago

c1505 commented 2 years ago

System Information

To reproduce

Logs

make[1]: Entering directory '/home/corey/rplidar_sdk-release-v1.12.0/sdk/sdk'
 CXX  src/rplidar_driver.cpp
src/rplidar_driver.cpp: In function ‘_u32 rp::standalone::rplidar::_crc32cal(_u32, void*, _u16)’:
src/rplidar_driver.cpp:997:23: warning: suggest parentheses around ‘-’ in operand of ‘&’ [-Wparentheses]
  997 |     _u8 leftBytes = 4 - len & 0x3;
      |                     ~~^~~~~
src/rplidar_driver.cpp: In member function ‘virtual void rp::standalone::rplidar::RPlidarDriverImplCommon::_ultraCapsuleToNormal(const rplidar_response_ultra_capsule_measurement_nodes_t&, rplidar_response_measurement_node_hq_t*, size_t&)’:
src/rplidar_driver.cpp:1208:32: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
 1208 |             if ((dist_predict1 == 0xFFFFFE00) || (dist_predict1 == 0x1FF)) {
      |                  ~~~~~~~~~~~~~~^~~~~~~~~~~~~
src/rplidar_driver.cpp:1216:32: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
 1216 |             if ((dist_predict2 == 0xFFFFFE00) || (dist_predict2 == 0x1FF)) {
      |                  ~~~~~~~~~~~~~~^~~~~~~~~~~~~
src/rplidar_driver.cpp: In member function ‘virtual u_result rp::standalone::rplidar::RPlidarDriverImplCommon::grabScanData(rplidar_response_measurement_node_t*, size_t&, _u32)’:
src/rplidar_driver.cpp:1795:26: error: narrowing conversion of ‘rp::hal::Event::EVENT_TIMEOUT’ from ‘int’ to ‘long unsigned int’ [-Wnarrowing]
 1795 |     case rp::hal::Event::EVENT_TIMEOUT:
      |                          ^~~~~~~~~~~~~
src/rplidar_driver.cpp: In member function ‘virtual u_result rp::standalone::rplidar::RPlidarDriverImplCommon::grabScanDataHq(rplidar_response_measurement_node_hq_t*, size_t&, _u32)’:
src/rplidar_driver.cpp:1824:26: error: narrowing conversion of ‘rp::hal::Event::EVENT_TIMEOUT’ from ‘int’ to ‘long unsigned int’ [-Wnarrowing]
 1824 |     case rp::hal::Event::EVENT_TIMEOUT:
      |                          ^~~~~~~~~~~~~
src/rplidar_driver.cpp: In member function ‘virtual u_result rp::standalone::rplidar::RPlidarDriverImplCommon::startMotor()’:
src/rplidar_driver.cpp:2190:26: warning: control reaches end of non-void function [-Wreturn-type]
 2190 |         setLidarSpinSpeed(600);//set default rpm to tof lidar
      |         ~~~~~~~~~~~~~~~~~^~~~~
make[1]: *** [/home/corey/rplidar_sdk-release-v1.12.0/sdk/mak_common.inc:82: /home/corey/rplidar_sdk-release-v1.12.0/sdk/obj/Linux/Release/sdk/src/rplidar_driver.o] Error 1
make[1]: Leaving directory '/home/corey/rplidar_sdk-release-v1.12.0/sdk/sdk'
make: *** [/home/corey/rplidar_sdk-release-v1.12.0/sdk/mak_common.inc:43: make_subs] Error 1
youngpad commented 2 years ago

I am experiencing the same issue.

FlabioMirelez commented 1 year ago

Similar error: CXX src/arch/linux/net_socket.cpp src/arch/linux/net_socket.cpp: In member function ‘virtual u_result rp::net::SocketAddress::getAddressAsString(char, size_t) const’: src/arch/linux/net_socket.cpp:170:15: error: ordered comparison of pointer with integer zero (‘const char’ and ‘int’) 170 | return ans<=0?RESULT_OPERATION_FAIL:RESULT_OK;

JoaquinUrrisa commented 1 year ago

Same here.

livethisdream commented 1 year ago

@roleohibachi and I worked this out and we're not sure if it's the right solution, but it's a solution that allows the code to compile. In sdk/src/arch/linux/net_socket.cpp on line 151 and 171, change: return ans<=0?RESULT_OPERATION_FAIL:RESULT_OK; to: return ans!=0?RESULT_OPERATION_FAIL:RESULT_OK;

and recompile from the root directory.

ajuton-ens commented 1 year ago

2 problems of data types : src/sl_lidar_driver.cpp:556:34: error: narrowing conversion of ‘rp::hal::Event::EVENT_TIMEOUT’ from ‘int’ to ‘long unsigned int’ [-Wnarrowing] is solved by adding an explicit cast in the file sl_lidar_driver.cpp line 556 :

case (long unsigned int)rp::hal::Event::EVENT_TIMEOUT:
case (long unsigned int)rp::hal::Event::EVENT_OK:

src/arch/linux/net_socket.cpp:170:15: error: ordered comparison of pointer with integer zero (‘const char*’ and ‘int’) is solved by adding an explicit cast in the file net_socket.cpp line 170 :

return (ans<=(const char *)0)?RESULT_OPERATION_FAIL:RESULT_OK;