Rin-memo

Personal Web Site of Rin Yokoyama

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でデータを取るへ戻る