DAQ/Mac OS Xでデータを取る/babirlのコンパイル
Memo-DAQ-Mac OS Xでデータを取るへ戻る
手順
- babirlのソースをダウンロードしてくる。今回使用したのはbabirl130716
- MacPortsでreadlineをインストール。(sudo port install readline)
- common.mkに以下を追加する。
CFLAGS += -I/opt/local/include
LDFLAGS += -L/opt/local/lib
- lib/bi-file.cの#include<sys/statfs.h>をコメントアウトし、<sys/mount.h>,
<sys/param.h>をインクルードする。
- lib/bi-file.c 80行目のfdatasync(fno)をfsync(fno)に置き換える。
- lib/bbzfile.cも同様に#include<sys/statfs.h>をコメントアウトし、<sys/mount.h>をインクルードする。
- include/bi-common.h 171行目でunion semun
が定義されているので、この名前をsemunから変更する。
- include/bi-common.h 184行目、babian/babian.c 31行目で semun が使われているのでこれも合わせて変更する。
- babinfo/babinfo.c 699行目にMSG_NOSIGNALが使われているが、BSDでは使えないようなのでsetsockopt()関数を使ってNO_SIGを無視するように変更
before:
if(send(tcpclinfo[i].sock, eabuff[eaflag], eahd[1], MSG_NOSIGNAL) < 0){
close(tcpclinfo[i].sock);
tcpclinfo[i].sock = 0;
}
after:
int set = 1;
setsockopt(tcpclinfo[i].sock, SOL_SOCKET, SO_NOSIGPIPE, (void*)&set, sizeof(set));
if(send(tcpclinfo[i].sock, eabuff[eaflag], eahd[1], 0) < 0){
close(tcpclinfo[i].sock);
tcpclinfo[i].sock = 0;
}
- lib/bi-tcp.c 140行目、mktcpsend_tout()内の/*connect OK*/以下の部分をコメントアウトする。
(できればちゃんとしたエラー処理にした方が良いと思いますが・・・)
/* connect OK*/
// ret = connect(sock, (struct sockaddr*)&saddr, sizeof(saddr));
// DB(printf("ret3 = %d\n", ret));
// if(ret < 0){
// close(sock);
// return 0;
// }
- devtool/Makefile のsexecuter, sexecuterts, serclient をとりあえずコメントアウト
- lib, babian, babinfo, babild, babicon, ridfutil, devtool でそれぞれmake
以上でMac側に必要なものがコンパイルできたはず。これらを/usr/babirl/bin/へコピー。
Memo-DAQ-Mac OS Xでデータを取るへ戻る