eclipse / paho.mqtt.cpp

Other
1.01k stars 432 forks source link

arm cross get error #472

Closed wangwenqiangGitHub closed 2 months ago

wangwenqiangGitHub commented 8 months ago

arm-linux-gnueabi-g++ gcc version = gcc4.9 eror: paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: error: cannot convert 'const MQTTAsync_disconnectOptions' to 'char' in initialization disconnect_options(const MQTTAsyncdisconnectOptions& copts) : opts{copts} {}

fpagliughi commented 8 months ago

Hi. Can you copy and paste the full output of the build? I can't tell from just this. Also, have you considered upgrading the compiler? gcc4.9 is nearly 10years old.

wangwenqiangGitHub commented 8 months ago

cmake -Bbuild -DPAHO_ENABLE_TESTING=OFF -DPAHO_BUILD_STATIC=ON -DPAHO_WITH_SSL=OFF -DPAHO_HIGH_PERFORMANCE=ON -DCMAKE_INSTALL_PREFIX=./OUT -DPAHO_MQTT_C_LIBRARIES=../paho.mqtt.c-1.3.13/build/OUT/lib -DPAHO_MQTT_C_INCLUDE_DIRS=../paho.mqtt.c-1.3.13/build/OUT/include -- The CXX compiler identification is GNU 4.9.4 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /mnt/d/code/r14_ltev2x_app/build/toolchain/gcc-4.9-2016.02-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found PahoMqttC: /mnt/d/mqtt_build/paho.mqtt.c-1.3.13/build/OUT/include -- Paho C Headers: /mnt/d/mqtt_build/paho.mqtt.c-1.3.13/build/OUT/include -- Paho C Library: /mnt/d/mqtt_build/paho.mqtt.c-1.3.13/build/OUT/lib -- Looking for C++ include pthread.h -- Looking for C++ include pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Check if compiler accepts -pthread -- Check if compiler accepts -pthread - yes -- Found Threads: TRUE -- Configuring done -- Generating done CMake Warning: Manually-specified variables were not used by the project:

PAHO_ENABLE_TESTING
PAHO_HIGH_PERFORMANCE

-- Build files have been written to: /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/build

cmake --build build [ 5%] Building CXX object src/CMakeFiles/paho-cpp-objs.dir/async_client.cpp.o In file included from /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/iasync_client.h:34:0, from /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/async_client.h:41, from /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/async_client.cpp:20: /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h: In constructor 'mqtt::disconnect_options::disconnect_options(const MQTTAsync_disconnectOptions&)': /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: error: cannot convert 'const MQTTAsync_disconnectOptions' to 'char' in initialization disconnect_options(const MQTTAsyncdisconnectOptions& copts) : opts{copts} {} ^ /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: warning: missing initializer for member 'MQTTAsync_disconnectOptions::struct_version' [-Wmissing-field-initializers] /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: warning: missing initializer for member 'MQTTAsync_disconnectOptions::timeout' [-Wmissing-field-initializers] /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: warning: missing initializer for member 'MQTTAsync_disconnectOptions::onSuccess' [-Wmissing-field-initializers] /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: warning: missing initializer for member 'MQTTAsync_disconnectOptions::onFailure' [-Wmissing-field-initializers] /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: warning: missing initializer for member 'MQTTAsync_disconnectOptions::context' [-Wmissing-field-initializers] /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: warning: missing initializer for member 'MQTTAsync_disconnectOptions::properties' [-Wmissing-field-initializers] /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: warning: missing initializer for member 'MQTTAsync_disconnectOptions::reasonCode' [-Wmissing-field-initializers] /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: warning: missing initializer for member 'MQTTAsync_disconnectOptions::onSuccess5' [-Wmissing-field-initializers] /mnt/d/mqtt_build/paho.mqtt.cpp-1.3.2/src/mqtt/disconnect_options.h:68:76: warning: missing initializer for member 'MQTTAsync_disconnectOptions::onFailure5' [-Wmissing-field-initializers] make[2]: [src/CMakeFiles/paho-cpp-objs.dir/build.make:76: src/CMakeFiles/paho-cpp-objs.dir/async_client.cpp.o] Error 1 make[1]: [CMakeFiles/Makefile2:137: src/CMakeFiles/paho-cpp-objs.dir/all] Error 2 make: *** [Makefile:156: all] Error 2

wangwenqiangGitHub commented 8 months ago

Hi. Can you copy and paste the full output of the build? I can't tell from just this. Also, have you considered upgrading the compiler? gcc4.9 is nearly 10years old. Hi,this is error ,thanks

fpagliughi commented 8 months ago

I tried to build a (native) gcc-4.9 for my system, but apparently the older gcc compilers can't be built by the latest versions?!?

As I recall, v4.9 had good C++11 coverage, so I thought it would be able to build the library. I think I was using v4.8 when I first wrote it.

Did it work with a newer compiler?

BebopChain commented 3 months ago

Just meet the same question. My gcc version is 4.9.2 :<

fpagliughi commented 3 months ago

I was never able to find a version of the compiler that old which I could test on any of my current systems. v4.9 is over 10yrs old at this point.

Pleas try a newer compiler version, or let me know what can be done to fix the build which doesn't break it for the latest compilers.

fpagliughi commented 2 months ago

oh, wait...

Is it maybe that gcc 4.9 is so old it still defaults to C++ 98? This library requires C++11.

If this is the problem, then you need to specify a flag to the compiler telling it to build to the C++11 standard. That is either the -std=c++0x for older compilers and -std=c++11 later ones. I don't remember which worked for v4.9.

If you're building your apps with CMake, use:

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

or set the target properties.

Just guessing that this might be the problem.

fpagliughi commented 2 months ago

I'm going to assume this was the problem and close the issue. If anyone has additional information, feel free to re-open and add to the discussion.

kite0220 commented 1 month ago

my OS is CENTOS 7.9 [root@VM-16-15-centos build]# cmake --version cmake version 3.24.4

CMake suite maintained and supported by Kitware (kitware.com/cmake). [root@VM-16-15-centos build]# g++ --version g++ (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3) Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@VM-16-15-centos build]# gcc --version gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3) Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

my error:

[root@VM-16-15-centos build]# make [ 1%] Building CXX object src/CMakeFiles/paho-mqttpp3-static.dir/async_client.cpp.o In file included from /root/setup/paho.mqtt.cpp/include/mqtt/properties.h:32:0, from /root/setup/paho.mqtt.cpp/include/mqtt/token.h:32, from /root/setup/paho.mqtt.cpp/include/mqtt/async_client.h:30, from /root/setup/paho.mqtt.cpp/src/async_client.cpp:20: /root/setup/paho.mqtt.cpp/include/mqtt/buffer_ref.h:96:2: warning: unused parameter ‘buf’ [-Wunused-parameter] buffer_ref(buffer_ref&& buf) =default; ^ In file included from /root/setup/paho.mqtt.cpp/include/mqtt/delivery_token.h:29:0, from /root/setup/paho.mqtt.cpp/include/mqtt/async_client.h:33, from /root/setup/paho.mqtt.cpp/src/async_client.cpp:20: /root/setup/paho.mqtt.cpp/include/mqtt/message.h: In constructor ‘mqtt::message::message(mqtt::string_ref, const void, size_t)’: /root/setup/paho.mqtt.cpp/include/mqtt/message.h:117:68: note: synthesized method ‘mqtt::buffer_ref::buffer_ref(mqtt::buffer_ref&&) [with T = char]’ first required here : message(std::move(topic), payload, len, DFLT_QOS, DFLT_RETAINED) {} ^ /root/setup/paho.mqtt.cpp/include/mqtt/message.h:106:2: warning: initializing argument 1 of ‘mqtt::message::message(mqtt::string_ref, const void, size_t, int, bool, const mqtt::properties&)’ [enabled by default] message(string_ref topic, const void* payload, size_t len, ^ In file included from /root/setup/paho.mqtt.cpp/include/mqtt/properties.h:32:0, from /root/setup/paho.mqtt.cpp/include/mqtt/token.h:32, from /root/setup/paho.mqtt.cpp/include/mqtt/async_client.h:30, from /root/setup/paho.mqtt.cpp/src/async_client.cpp:20: /root/setup/paho.mqtt.cpp/include/mqtt/buffer_ref.h: At global scope: /root/setup/paho.mqtt.cpp/include/mqtt/buffer_ref.h:59:7: warning: unused parameter ‘rhs’ [-Wunused-parameter] class buffer_ref ^ In file included from /root/setup/paho.mqtt.cpp/include/mqtt/delivery_token.h:29:0, from /root/setup/paho.mqtt.cpp/include/mqtt/async_client.h:33, from /root/setup/paho.mqtt.cpp/src/async_client.cpp:20: /root/setup/paho.mqtt.cpp/include/mqtt/message.h: In member function ‘void mqtt::message::set_topic(mqtt::string_ref)’: /root/setup/paho.mqtt.cpp/include/mqtt/message.h:239:10: note: synthesized method ‘mqtt::buffer_ref& mqtt::buffer_ref::operator=(mqtt::bufferref&&) [with T = char]’ first required here topic = topic ? std::move(topic) : string_ref(string()); ^ In file included from /root/setup/paho.mqtt.cpp/include/mqtt/properties.h:32:0, from /root/setup/paho.mqtt.cpp/include/mqtt/token.h:32, from /root/setup/paho.mqtt.cpp/include/mqtt/async_client.h:30, from /root/setup/paho.mqtt.cpp/src/async_client.cpp:20: /root/setup/paho.mqtt.cpp/include/mqtt/buffer_ref.h: At global scope: /root/setup/paho.mqtt.cpp/include/mqtt/buffer_ref.h:91:2: warning: unused parameter ‘buf’ [-Wunused-parameter] buffer_ref(const buffer_ref& buf) =default; ^ In file included from /root/setup/paho.mqtt.cpp/include/mqtt/delivery_token.h:29:0, from /root/setup/paho.mqtt.cpp/include/mqtt/async_client.h:33, from /root/setup/paho.mqtt.cpp/src/async_client.cpp:20: /root/setup/paho.mqtt.cpp/include/mqtt/message.h: In member function ‘mqtt::message_ptr_builder::self& mqtt::message_ptr_builder::topic(mqtt::string_ref)’: /root/setup/paho.mqtt.cpp/include/mqtt/message.h:439:24: note: synthesized method ‘mqtt::buffer_ref::buffer_ref(const mqtt::bufferref&) [with T = char]’ first required here msg->set_topic(topic); ^ /root/setup/paho.mqtt.cpp/include/mqtt/message.h:238:7: warning: initializing argument 1 of ‘void mqtt::message::set_topic(mqtt::string_ref)’ [enabled by default] void set_topic(string_ref topic) { ^ In file included from /root/setup/paho.mqtt.cpp/include/mqtt/token.h:34:0, from /root/setup/paho.mqtt.cpp/include/mqtt/async_client.h:30, from /root/setup/paho.mqtt.cpp/src/async_client.cpp:20: /root/setup/paho.mqtt.cpp/include/mqtt/string_collection.h: At global scope: /root/setup/paho.mqtt.cpp/include/mqtt/string_collection.h:267:7: warning: unused parameter ‘other’ [-Wunused-parameter] class name_value_collection ^ In file included from /root/setup/paho.mqtt.cpp/include/mqtt/iasync_client.h:33:0, from /root/setup/paho.mqtt.cpp/include/mqtt/async_client.h:41, from /root/setup/paho.mqtt.cpp/src/async_client.cpp:20: /root/setup/paho.mqtt.cpp/include/mqtt/connect_options.h: In member function ‘void mqtt::connect_options::set_http_headers(mqtt::name_value_collection&&)’: /root/setup/paho.mqtt.cpp/include/mqtt/connect_options.h:551:16: note: synthesized method ‘mqtt::name_value_collection& mqtt::name_value_collection::operator=(mqtt::name_valuecollection&&)’ first required here httpHeaders = std::move(httpHeaders); ^ In file included from /root/setup/paho.mqtt.cpp/include/mqtt/iasync_client.h:34:0, from /root/setup/paho.mqtt.cpp/include/mqtt/async_client.h:41, from /root/setup/paho.mqtt.cpp/src/async_client.cpp:20: /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h: In constructor ‘mqtt::disconnect_options::disconnect_options(const MQTTAsync_disconnectOptions&)’: /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h:68:76: error: cannot convert ‘const MQTTAsync_disconnectOptions’ to ‘char’ in initialization disconnect_options(const MQTTAsyncdisconnectOptions& copts) : opts{copts} {} ^ /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h:68:76: warning: missing initializer for member ‘MQTTAsync_disconnectOptions::struct_version’ [-Wmissing-field-initializers] /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h:68:76: warning: missing initializer for member ‘MQTTAsync_disconnectOptions::timeout’ [-Wmissing-field-initializers] /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h:68:76: warning: missing initializer for member ‘MQTTAsync_disconnectOptions::onSuccess’ [-Wmissing-field-initializers] /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h:68:76: warning: missing initializer for member ‘MQTTAsync_disconnectOptions::onFailure’ [-Wmissing-field-initializers] /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h:68:76: warning: missing initializer for member ‘MQTTAsync_disconnectOptions::context’ [-Wmissing-field-initializers] /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h:68:76: warning: missing initializer for member ‘MQTTAsync_disconnectOptions::properties’ [-Wmissing-field-initializers] /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h:68:76: warning: missing initializer for member ‘MQTTAsync_disconnectOptions::reasonCode’ [-Wmissing-field-initializers] /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h:68:76: warning: missing initializer for member ‘MQTTAsync_disconnectOptions::onSuccess5’ [-Wmissing-field-initializers] /root/setup/paho.mqtt.cpp/include/mqtt/disconnect_options.h:68:76: warning: missing initializer for member ‘MQTTAsync_disconnectOptions::onFailure5’ [-Wmissing-field-initializers] make[2]: [src/CMakeFiles/paho-mqttpp3-static.dir/async_client.cpp.o] Error 1 make[1]: [src/CMakeFiles/paho-mqttpp3-static.dir/all] Error 2 make: *** [all] Error 2

fpagliughi commented 1 month ago

Which version of this library are you using? The Paho C lib? Can you show your CMake command line?