在開始之前,請先確定有下列檔案:
1. zeromq-2.2.0.tar.gz(我以 Stable release 2.2 版本為範例) 下載位置:zeromq 2. util-linux-2.22.2.tar.gz(ZeroMQ 編譯時需要 uuid-dev 相關函式庫) 下載位置:util-linux 3. toolchain for RPi (以 Raspberry Pi:Cross-compiler (update) 中所下載的 32 bits 為範例) 由於 Raspbian 有支援 hardfp, 因此使用的 toolchain 為官方提供的 toolchain 中的 arm-bcm2708hardfp-linux-gnueabi。
首先,先將 toolchain 與環境參數設定好:
我將 toolchain 安裝在/home/bkdragon/rpi/rpi_cross_compiler_x86/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi
1. 登入 root 身分
$ sudo -i2. 設定 PATH
$ export PATH=$PATH:/home/bkdragon/rpi/rpi_cross_compiler_x86/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin以上便設定好 toolchain。
接著編譯 uuid-dev 相關的函示庫,
編譯 ZeroMQ 時需要用到。1. 切換目錄至 util-linux-2.22.2.tar.gz 所在位置
$ cd /tools2. 建立暫時安裝目錄
$ mkdir util-linux-tmp3. 解壓縮 util-linux-2.22.2.tar.gz
$ tar -xzvf util-linux-2.22.2.tar.gz4. 進入 util-linux-2.22.2
$ cd util-linux-2.22.2/5. 執行 configure 進行配置
$ ./configure -without-ncurses -host=arm-bcm2708hardfp-linux-gnueabi -disable-login -disable-su -prefix=/tools/util-linux-tmp6. 開始編譯
$ make7. 執行安裝
$ make install8. 切換到 util-linux-tmp
$ cd /tools/util-linux-tmp9. 將 lib/ 目錄底下的 libuuid.a libuuid.la libuuid.so libuuid.so.1 libuuid.so.1.3.0 複製到 toolchain 的 lib 中
$ cp lib/libuuid* /home/bkdragon/rpi/rpi_cross_compiler_x86/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/arm-bcm2708hardfp-linux-gnueabi/lib10. 將 include/ 目錄底下的 uuid 目錄複製到 toolchain 的 include 中
$ cp -r include/uuid /home/bkdragon/rpi/rpi_cross_compiler_x86/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/arm-bcm2708hardfp-linux-gnueabi/include
以上步驟設置完 uuid-dev 當相關函式庫;
接著開始編譯 ZeroMQ 的函示庫!
1. 切換目錄至 zeromq-2.2.0.tar.gz 所在位置
$ cd /tools2. 建立暫時安裝目錄
$ mkdir zeromq-2.2.0-rpi3. 解壓縮 zeromq-2.2.0.tar.gz
$ tar -xzvf zeromq-2.2.0.tar.gz4. 進入 zeromq-2.2.0
$ cd zeromq-2.2.0/5. 執行 configure 進行配置
$ ./configure -host=arm-bcm2708hardfp-linux-gnueabi -prefix=/tools/zeromq-2.2.0-rpi6. 開始編譯
$ make7. 執行安裝
$ make install8. 所有 ZeroMQ 的相關檔案會被放置在 /tools/zeromq-2.2.0-rpi 底下,將整個目錄把包
$ cd .. $ tar -czvf zeromq-2.2.0-rpi.tar.gz zeromq-2.2.0-rpi/9. 將 zeromq-2.2.0-rpi.tar.gz 複製到 RPi 後,解壓縮到 /usr/local 中,並執行 ldconfig
(on RPi) $ cp -r * /usr/local (on RPi) $ sudo ldconfig
以上即完成在開發機上的 ZeroMQ for RPi 編譯動作。
之後再 RPi 上編譯 ZeroMQ 的程式測試是否正常運作!
Hi,
回覆刪除I am trying to follow these steps for cross compiling zeromq for beagle bone black. but i am getting this message
make[1]: Entering directory `/home/jerin/22/zeromq-4.0.3/tools'
CC curve_keygen.o
CCLD curve_keygen
../src/.libs/libzmq.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[1]: *** [curve_keygen] Error 1
make[1]: Leaving directory `/home/jerin/22/zeromq-4.0.3/tools'
make: *** [all-recursive] Error 1
How can this be solved