не удается найти -lpaho-mqtt3 c для компилятора arm-none- linux -gnueabi-g ++ - PullRequest
1 голос
/ 17 апреля 2020

У меня есть компилятор arm-none- linux -gnueabi-g ++ по указанному ниже пути,

root@user-VirtualBox:~# which arm-none-linux-gnueabi-g++
/home/user/octane_etk-6.0.0.240/arm-toolchain/bin/arm-none-linux-gnueabi-g++

, и я дал то же самое в пути DCMAKE_COMPILER в команде построения paho,

user@user-VirtualBox:~/octane_etk_sample-6.0.0.240/paho.mqtt.c$ cmake -Bbuild -H. -DPAHO_WITH_SSL=OFF -DPAHO_ENABLE_TESTING=OFF  -DCMAKE_C_COMPILER=/home/user/octane_etk-6.0.0.240/arm-toolchain/bin/arm-none-linux-gnueabi-gcc  -DCMAKE_CXX_COMPILER=/home/user/octane_etk-6.0.0.240/arm-toolchain/bin/arm-none-linux-gnueabi-g++
-- The C compiler identification is GNU 4.8.1
-- Check for working C compiler: /home/user/octane_etk-6.0.0.240/arm-toolchain/bin/arm-none-linux-gnueabi-gcc
-- Check for working C compiler: /home/user/octane_etk-6.0.0.240/arm-toolchain/bin/arm-none-linux-gnueabi-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- CMake version: 3.10.2
-- CMake system name: Linux
-- Timestamp is 2020-04-17T07:33:49Z
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_CXX_COMPILER


-- Build files have been written to: /home/user/octane_etk_sample-6.0.0.240/paho.mqtt.c/build

После этой сборки, которую я дал,

$ sudo cmake --build build/ --target install
$ sudo ldconfig

и я скопировал libpaho-mqtt3 c .so, libpaho-mqtt3 c .so.1, libpaho-mqtt3 c .so.1.3.1 из "/home/user/octane_etk_sample-6.0.0.240/paho.mqtt.c/build/src/" в ту же папку, где находится этот "-lltkcpp_atmel".

Тогда как, когда я даю make, он говорит, что не может найти -lpaho-mqtt3 c,

root@user-VirtualBox:/home/user/octane_etk_sample-6.0.0.240# make arm
mkdir -p ./bin
arm-none-linux-gnueabi-g++ \
    -Wno-write-strings \
    -Iinclude \
    speedway_embedded_example.cpp -lpaho-mqtt3c \
    -Llib \
    -static -lltkcpp_atmel -lltkcppimpinj_atmel -lxml2_atmel \
    -lssl_atmel -lcrypto_atmel -ldl_atmel \
    -o bin/speedwayr_arm
/home/user/octane_etk-6.0.0.240/arm-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lpaho-mqtt3c

Как решить эту проблему? Что-то не так при сборке paho против arm-none- linux -gnueabi-g cc & g ++?

Примечание 1. Команда компилятора, предложенная Дэвидом Раньери

root@user-VirtualBox:/home/mindlogic/octane_etk_sample-6.0.0.240# make arm
mkdir -p ./bin
arm-none-linux-gnueabi-g++ \
    -Wno-write-strings \
    -o bin/speedwayr_arm \
    -Iinclude \
    speedway_embedded_example.cpp -lpaho-mqtt3c \
    -Llib \
    -static -lltkcpp_atmel -lltkcppimpinj_atmel -lxml2_atmel \
    -lssl_atmel -lcrypto_atmel -ldl_atmel
/home/mindlogic/octane_etk-6.0.0.240/arm-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lpaho-mqtt3c

Примечание 2:

Я изменил сборку cmake с

cmake -Bbuild -H. -DPAHO_WITH_SSL=OFF -DPAHO_ENABLE_TESTING=OFF  -DCMAKE_C_COMPILER=/home/user/octane_etk-6.0.0.240/arm-toolchain/bin/arm-none-linux-gnueabi-gcc  -DCMAKE_CXX_COMPILER=/home/user/octane_etk-6.0.0.240/arm-toolchain/bin/arm-none-linux-gnueabi-g++

на

 cmake -Bbuild -H. -DPAHO_WITH_SSL=OFF -DPAHO_ENABLE_TESTING=OFF 
-DPAHO_BUILD_STATIC=True -DCMAKE_C_COMPILER=/home/user/octane_etk-6.0.0.240/arm-toolchain/bin/arm-none-linux-gnueabi-gcc  -DCMAKE_CXX_COMPILER=/home/user/octane_etk-6.0.0.240/arm-toolchain

После сборки библиотеки как stati c one, теперь я могу успешно скомпилировать с помощью команды "makr arm", т. е. командами, приведенными ниже

root@user-VirtualBox:/home/user/octane_etk_sample-6.0.0.240# make cap
mkdir -p ./bin
arm-none-linux-gnueabi-g++ \
    -Wno-write-strings \
    -Iinclude \
    speedway_embedded_example.cpp \
    -Llib \
    -static -lltkcpp_atmel -lltkcppimpinj_atmel -lxml2_atmel \
    -lssl_atmel -lcrypto_atmel -ldl_atmel -lpaho-mqtt3c-static -ljansson -lpthread \
    -o bin/speedwayr_arm

1 Ответ

0 голосов
/ 17 апреля 2020

Порядок имеет значение, попробуйте сгенерировать объект перед связыванием:

arm-none-linux-gnueabi-g++ \
    -Wno-write-strings \
    -o bin/speedwayr_arm \
    -Iinclude \
    speedway_embedded_example.cpp -lpaho-mqtt3c \
    -Llib \
    -static -lltkcpp_atmel -lltkcppimpinj_atmel -lxml2_atmel \
    -lssl_atmel -lcrypto_atmel -ldl_atmel
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...