🛰️

M1 MacでRTKLIBをコンパイル

2022/06/06に公開

RTKLIBをMacで使いたい

RTKLIBをMac(M1 Macmini)で使いたかったのでやってみた、その備忘録。CLI版のみ。

1. Homebrewのインストール

Rosetta2は入れない。Command Line Toolsをインストールしておく。あとは、
https://brew.sh/index_ja
にあるコマンドをTerminalから叩くだけ。/opt/homebrewにインストールされる。

macOS Catalinaからデフォルトのログインシェルがzshに変更されたが、現環境ではbashに戻している。~/.bashrcに以下を追記した。

eval $(/opt/homebrew/bin/brew shellenv)

諸々の更新作業は指示通りにやっておく。

2. gcc(gfortran)のインストール

Terminalから

brew install gcc

でインストール。ちょっと時間かかる。ついでにgnuplotも入れた。

brew install gnuplot

3. RTKLIBの編集とコンパイル

(1) RTKLIBのソース取得

本家のtomojitakasu/RTKLIBから

git clone -b rtklib_2.4.3 https://github.com/tomojitakasu/RTKLIB.git

で適当な場所に取得。

(2) CLI版のコンパイル

まずライブラリ周りをコンパイルしておく。

$ cd RTKLIB/lib/iers/gcc/
$ make

ここからソースをちょっといじる。
MacOSがサポートするボーレートは、帯域幅がLinuxより狭い。これを修正する(460800と921600を削除する)。

RTKLIB/src/stream.c
@@ -345,8 +345,8 @@
 static serial_t *openserial(const char *path, int mode, char *msg)
 {
     const int br[]={
-        300,600,1200,2400,4800,9600,19200,38400,57600,115200,230400,460800,
-        921600
+        300,600,1200,2400,4800,9600,19200,38400,57600,115200,230400
+ 
     };
     serial_t *serial;
     int i,brate=9600,bsize=8,stopb=1,tcp_port=0;
@@ -358,8 +358,8 @@
     char dcb[64]="";
 #else
     const speed_t bs[]={
-        B300,B600,B1200,B2400,B4800,B9600,B19200,B38400,B57600,B115200,B230400,
-        B460800,B921600
+        B300,B600,B1200,B2400,B4800,B9600,B19200,B38400,B57600,B115200,B230400
+
     };
     struct termios ios={0};
     int rw=0;

次に実行ファイル群(RTKLIB/app/consapp)をコンパイルする。コンパイルの前にMakefileを編集する。

$ cd RTKLIB/app/consapp

このconsapp配下のディレクトリ群(pos2kml str2str rnx2rtkp convbin rtkrcv)にあるgcc/makefileを全部編集する。以下のように-ltrを削除する。

*/gcc/makefile
- LDLIBS  = -lm -lrt
+ LDLIBS  = -lm

rnx2rtkp/gcc/makefileは、上記の他にhomebrewで入れたgfortranのライブラリのパスを指定する必要がある。以下をmakefileのLDLIBの前に追記する。DNFREQも変更。

rnx2rtkp/gcc/makefile
@@ -2,14 +2,15 @@
 BINDIR  = /usr/local/bin
 SRC     = ../../../../src
 
-OPTS    = -DTRACE -DENAGLO -DENAQZS -DENAGAL -DENACMP -DENAIRN -DNFREQ=5
+OPTS    = -DTRACE -DENAGLO -DENAQZS -DENAGAL -DENACMP -DENAIRN -DNFREQ=3
 #OPTS    = -DTRACE -DENAGLO -DENAQZS -DENAGAL -DENACMP -DENAIRN -DNFREQ=5 -DIERS_MODEL
 #OPTS    = -DENAGLO -DENAQZS -DENAGAL -DENACMP -DNFREQ=2
 
 # for no lapack
CFLAGS  = -Wall -O3 -ansi -pedantic -Wno-unused-but-set-variable -I$(SRC) $(OPTS) -g
 #LDLIBS  = -lm -lrt
-LDLIBS  = ../../../../lib/iers/gcc/iers.a -lgfortran -lm -lrt
+LDFLAGS = -L /opt/homebrew/opt/gfortran/lib/gcc/11
+LDLIBS  = ../../../../lib/iers/gcc/iers.a -lgfortran -lm
 
 #CFLAGS  = -Wall -O3 -ansi -pedantic -Wno-unused-but-set-variable -I$(SRC) -DLAPACK $(OPTS)
 #LDLIBS  = -lm -lrt -llapack -lblas

全て編集したらmakeする。

$ make

構造体周りのwarningが表示されるがコンパイルはできた。

4. RTKLIBのインストール

インストール先は RTKLIB/app/consappのmakefileにあるBINDIRで指定する。ディレクトリが存在しない場合は予め作っておく。現環境ではユーザ配下のディレクトリ(RTKLIB/bin)を指定した。

$ make install

履歴

  • 2022.06.06 str2strによるNtrip取得とconvbinは正常に実行できた。

参考文献

Discussion