M1 MacでRTKLIBをコンパイル
RTKLIBをMacで使いたい
RTKLIBをMac(M1 Macmini)で使いたかったのでやってみた、その備忘録。CLI版のみ。
1. Homebrewのインストール
Rosetta2は入れない。Command Line Toolsをインストールしておく。あとは、
にあるコマンドを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を削除する)。
@@ -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を削除する。
- LDLIBS = -lm -lrt
+ LDLIBS = -lm
rnx2rtkp/gcc/makefileは、上記の他にhomebrewで入れたgfortranのライブラリのパスを指定する必要がある。以下をmakefileのLDLIBの前に追記する。DNFREQも変更。
@@ -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