Armadilloフォーラム

ATDE7環境でmosquitto開発(C++)

kiso.masaki

2018年11月7日 11時46分

お世話になります。

以下の開発環境でC++のMosquittoクライアント開発を行っております。

mosquitto関連のパッケージはインストールしていますが、クロスコンパイルのMake時に
リンカーオプションの「-lmosquitto」が見つからないエラーが発生します。

解決方法や、不足点あれば、ご教示ください。

実機:Armadillo-IoT G3
開発環境:ATDE7
クロスコンパイラ:arm-linux-gnueabihf

■環境

atmark@atde7:~$ uname -a
Linux atde7 4.9.0-8-686-pae #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) i686 GNU/Linux

■make時のエラー

usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: 互換性のないを //usr/lib/libmosquitto.so スキップしました (-lmosquitto を探索している時)
/usr/lib/gcc-cross/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld: -lmosquitto が見つかりません

■mosquitto関連のパッケージ

atmark@atde7:~$ dpkg -l | grep mosquitto
ii  libmosquitto-dev:i386                 1.4.10-3+deb9u2                             i386         MQTT version 3.1/3.1.1 client library, development files
ii  libmosquitto1:i386                    1.4.10-3+deb9u2                             i386         MQTT version 3.1/3.1.1 client library
ii  mosquitto                             1.4.10-3+deb9u2                             i386         MQTT version 3.1/3.1.1 compatible message broker
ii  mosquitto-clients                     1.4.10-3+deb9u2                             i386         Mosquitto command line MQTT clients
ii  mosquitto-dev                         1.4.10-3+deb9u2                             all          Development files for Mosquitto

■Makefile

CROSS :=arm-linux-gnueabihf
 
ifneq ($(CROSS),)
CROSS_PREFIX := $(CROSS)-
endif
 
COMPILER  = $(CROSS_PREFIX)g++
CFLAGS    = -Wall -std=c++0x -pthread
LDFLAGS   = -lmosquitto
 
INCLUDE   = -I./include -I/usr/arm-linux-gnueabihf
TARGET    = ./bin/$(shell basename `readlink -f .`)
SRCDIR    = ./src
ifeq "$(strip $(SRCDIR))" ""
  SRCDIR  = .
endif
SOURCES   = $(wildcard $(SRCDIR)/*.cpp)
OBJDIR    = ./obj
ifeq "$(strip $(OBJDIR))" ""
  OBJDIR  = .
endif
OBJECTS   = $(addprefix $(OBJDIR)/, $(notdir $(SOURCES:.cpp=.o)))
DEPENDS   = $(OBJECTS:.o=.d)
 
$(TARGET): $(OBJECTS) $(LIBS)
    $(COMPILER) -o $@ $^ $(LDFLAGS)
 
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
    -mkdir -p $(OBJDIR)
    $(COMPILER) $(CFLAGS) $(INCLUDE) -o $@ -c $<
 
all: clean $(TARGET)
 
 
clean:
    -rm -f $(OBJECTS) $(DEPENDS) $(TARGET)
 
-include $(DEPENDS)
コメント

古関です。

libmosquitto-dev の armhf版がインストールされていないため
エラーになるのではないでしょうか。

# sudo apt-get install libmosquitto-dev:armhf

を実行しインストール後、ビルドできるか試していただけますでしょうか。

古関さん
ご返信いただき、誠にありがとうございます。

早速、試したところ、無事makeが通るようになりました。
ネット上に情報が少なくて、困っておりました。

大変助かりました!
ありがとうございます!

> 古関です。
>
> libmosquitto-dev の armhf版がインストールされていないため
> エラーになるのではないでしょうか。
>
> # sudo apt-get install libmosquitto-dev:armhf
>
> を実行しインストール後、ビルドできるか試していただけますでしょうか。