Closed wangwenqiangGitHub closed 2 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.
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
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
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?
Just meet the same question. My gcc version is 4.9.2 :<
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.
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.
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.
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
Which version of this library are you using? The Paho C lib? Can you show your CMake command line?
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} {}