c++ - 无法为arm-none-linux-gnueabi-g++编译器找到-lpaho-mqtt3c

标签 c++ c linker

我在以下路径中有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++

我在paho的build命令中的DCMAKE_COMPILER路径中给出了相同的命令,
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

并且我从“/home/user/octane_etk_sample-6.0.0.240/paho.mqtt.c/build/src/中复制了libpaho-mqtt3c.so,libpaho-mqtt3c.so.1,libpaho-mqtt3c.so.1.3.1。 ”到此“-lltkcpp_atmel”所在的文件夹。

而当我说出它时,找不到-lpaho-mqtt3c,
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

如何克服这个问题?在针对arm-none-linux-gnueabi-gcc和g++构建paho时出现问题吗?

注1:
David Ranieri建议的编译器命令
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

在将库构建为静态库之后,现在我可以成功使用“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

最佳答案

顺序很重要,请在链接之前尝试生成对象:

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

关于c++ - 无法为arm-none-linux-gnueabi-g++编译器找到-lpaho-mqtt3c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61266452/

相关文章:

c++ - 我怎么能在这个简单的 C++ 游戏中转到另一个 "map"?

c++ - C++ 中的 vector 形状光栅化

c++ - 从 C++ 调用组件中定义的 QML 函数

assembly - GAS x86 16 位汇编器无法解析地址

c - GNU ld : weak declaration overriding strong declaration

ubuntu - 如何在Ubuntu中简洁地链接库文件地址较长的文件

c++ - 如何自定义windows默认右键弹出菜单

c - 文件夹内的 xcode c 文件未执行

c - 如何有选择地包含头文件

c - 双链表中在末尾插入一个节点并在开头删除一个节点