Raspberry 2で実行するように2016年に作成されたソフトウェアをRaspberry 5に移行したいと思います。この移行中にすべてのファイルをRP5にコピーしました。しかし、RP5で実行すると、localhostを介してスクリーンショットを撮っても「gateway」というファイルを実行できないため、他のコードは機能しません。ゲートウェイファイルは実行ファイルです。下の図に示すように、ゲートウェイに必要なライブラリが作成されました。現在経験している問題は、RP5にlibboost_system.so.1.55.0というライブラリをインストールしたいということです。写真が示すようにインストールしましたが、ゲートウェイフォルダを実行しようとすると同じライブラリエラーが発生します。私がインストール部分を間違っていますか?ロケーションパスエラーが発生しましたか?この問題を解決するのに役立ちますか?どのような道を選ぶべきですか?
pi@raspberrypi:~/eos-gateway $ file gateway
gateway: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=5d922572a7f8a45905671e08c5221ec4a1f9ee4f, with debug_info, not stripped
pi@raspberrypi:~/eos-gateway $ readelf -d gateway
Dynamic section at offset 0x1af188 contains 35 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libcaf_io.so.0.14.0]
0x00000001 (NEEDED) Shared library: [libcaf_core.so.0.14.0]
0x00000001 (NEEDED) Shared library: [librf24-bcm.so.1]
0x00000001 (NEEDED) Shared library: [libmysqlcppconn.so.7]
0x00000001 (NEEDED) Shared library: [libboost_system.so.1.55.0]
0x00000001 (NEEDED) Shared library: [libcrypto.so.1.0.0]
0x00000001 (NEEDED) Shared library: [libstdc++.so.6]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000f (RPATH) Library rpath: [/usr/local/lib]
0x0000000c (INIT) 0x24358
0x0000000d (FINI) 0x178d80
0x00000019 (INIT_ARRAY) 0x1cf12c
0x0000001b (INIT_ARRAYSZ) 84 (bytes)
0x0000001a (FINI_ARRAY) 0x1cf180
0x0000001c (FINI_ARRAYSZ) 4 (bytes)
0x6ffffef5 (GNU_HASH) 0x10194
0x00000005 (STRTAB) 0x14f64
0x00000006 (SYMTAB) 0x11ac4
0x0000000a (STRSZ) 57104 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x00000015 (DEBUG) 0x0
0x00000003 (PLTGOT) 0x1cf2c8
0x00000002 (PLTRELSZ) 2880 (bytes)
0x00000014 (PLTREL) REL
0x00000017 (JMPREL) 0x23818
0x00000011 (REL) 0x236b8
0x00000012 (RELSZ) 352 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x6ffffffe (VERNEED) 0x23508
0x6fffffff (VERNEEDNUM) 6
0x6ffffff0 (VERSYM) 0x22e74
0x00000000 (NULL) 0x0
pi@raspberrypi:~/eos-gateway $ sudo ./gateway
./gateway: error while loading shared libraries: libboost_system.so.1.55.0: cannot open shared object file: No such file or directory
pi@raspberrypi:~/eos-gateway $
sudo apt-get install libboost1.55*を使用してライブラリをインストールしました。今回のインストールではusr/local/libの場所にもインストールしました。しかし、まだlibboost1.55エラーが発生します。場所エラーやインストールエラーが発生したようですが、確認する方法がわかりません。
答え1
Raspberry 2で実行するように2016年に作成されたソフトウェアをRaspberry 5に移行したいと思います。この移行中にすべてのファイルをRP5にコピーしました。
ご存知のように、32ビットの依存関係の正確なABI互換バージョンが必要です。 (あなたのOSはRPi5で64ビットになることを望むかもしれません。そうしないとRAMの半分にアクセスできません。そして多くのパフォーマンス)、libboost-systemに加えてlibcryptoとlibmysqlcppconがあります。
素晴らしいいいえシステムにlibboostをインストールします。ソースtarballをどこかにコピーして解凍します。これはBoostのABI互換バージョンではありません。
sudo apt-get install libboost1.55*を使用してライブラリをインストールしました。
それは何もインストールしてはいけません。現在Debianはブースト1.55には付属していません。
達成する必要があるのは、「ゲートウェイ」ソフトウェアで使用されるライブラリがオペレーティングシステムに付属している状況です。
たとえば、コンテナで「古い」Debianを実行し、そのコンテナにシステムのどの部分を公開する必要があるかを知ったり、リンクしたいライブラリが実際に必要であることを示唆しているようです。最新のライブラリを使用するようにソフトウェアを再構築します。リンクされたライブラリの1つの名前にこのエントリがあるという事実は、-bcm
おそらくそのライブラリの新しいバージョンが必要であることを意味します。これは通常、RPiビジネスのCPU供給装置「broadcom」の略語であるためです。従来のRPiに比べて大きく変わりました。
この場合、再構築が容易になります。gateway
使用しているlibrf24-bcmはGPL2ライブラリです。つまり、ソースコードに関係なく、gateway
ソフトウェアを再構築するために必要なソースコードとすべてのスクリプトにアクセスできる必要があります。その時点でゲートウェイソフトウェアをどのように構築したかはわかりませんが、その情報はまだ古いRPiイメージにあります。