MacOS Xの最近のブログ記事

何となく最近プログラミングしたい。
とりあえず、MacOSで何か作ろうと思っていろいろ調査したりしている。

dlopen()で、Dynamic Libraryを使う方法。
モジュール用にこんなん書いてみる。hoi.cとして保存。


#include

void hoi(void)
{
  printf("hoi!\n");
}


呼び出し側としてこんなん書いてみる。main.cとして保存。

#include 
#include 

void (*hp)(void);

int main(int argc, char **argv)
{
  void *p = dlopen("hoi.so", RTLD_NOW | RTLD_LOCAL);
  if(p == NULL){
   fprintf(stderr, "hoi.so: %s\n", dlerror());
   exit(1);
  }

  hp = (void (*)(void))dlsym(p, "hoi");

  if(!hp){
    fprintf(stderr, "hoi: %s\n", dlerror());
    exit(1);
  }

  hp();

  dlclose(p);
  return 0;
}


モジュールhoi.soのコンパイル (-archはユニバーサルバイナリを指定)


% gcc -arch i386 -arch ppc -arch x86_64 -fno-common hoi.c
% gcc -arch i386 -arch ppc -arch x86_64 -bundle -flat_namespace -undefined suppress -o hoi.so hoi.o

呼び出し側


% gcc -arch i386 -arch ppc -arch x86_64 main.c -o main -ldl

% ./main

hoi

いやー、単なる現実逃避。報告書めんどくせー。

FreeでMacOS上でVPN環境を構築するべく、いろいろ調べていたら、
売り物ばっかだね−。iVPNとか。

とりあえずトンネルでいいやと思っていたんだけど、tun/tap device両方ないや。
と思ったら、作っている人がいたいた。

http://sourceforge.net/projects/tuntaposx/

助かる。後はOpenVPNを使えばヨロシ。

なんとなくハイバネーションにしたい時のコマンドを良く忘れて苦しいのでメモ。

% pmset -a hibernatemode 5

この辺。
http://www.takagikun.org/olddiary/?date=20061124

pmset pmset pmset

色々な事情があって、53番でsshdを上げます。
なぜかは個人的に聞いてください。一応出張準備です。

MacOS XではUNIXでいうところのinetdみたいなlaunchdというのがあって、それをいじる方法がよく分からなかったんだが、結構綺麗に設計されている。

基本的には、/etc/servicesで定義されたサービス名と対応したものを、/System/Library/LaunchDaemon/の下にあるファイルの情報から実行ファイルを探して実行するだけ。

今回は53であげるので、/etc/servicesのdomainのところをssh2に変更。
% cd /System/Library/LaunchDaemon
% cp ssh.plist ssh2.plist
ssh2.plistの中のSockServiceNameをssh2に変更
Labelもcom.openssh.sshd2に変更

リブートしたらしっかり上がった。こういうところ、新しいUNIXって感じで好感が持てるな。plistの中身はほぼxinetdという感じだが。
が一応できるようだ。

# ifconfig vlan0 create
# ifconfig vlan0 vlan <tag-id> vlandev <ifname>
# ifconfig vlan0 <ipaddr> netmask <netmask>

どうも,vlanの親インターフェースにアドレスを付けては
いけないみたい。(0.0.0.0に指定)

後,vlan作っても、環境設定のネットワークでインターフェースが見れない。

これってやっぱり,rc.localとかに書き込むのが正しいんでしょうか?
もっと良いやり方教えてー。 > ゲンゲ
----------
追記:
 ネットワーク環境設定で、VLAN設定できることが判明。
   en0のアドレスを適当に10.10.10.10/32とかにした。
 これの方がrc.localより綺麗でいいや。良かった良かった。

LeopardでVHDLをやろうとGHDLをいじったりしていたが、
パッケージで配布されているものはうまく動かないことが判明。

仕方なくコンパイルしてやろうと思ったが、Adaで書かれていて
Adaのコンパイラがないと怒られ、GNATというコンパイラが
必要だというので早速インストール。どうもうまくコンパイル
されない。GNATのバージョンに依存して、コンパイルできたり
できなかったりなのかも。

ここ、頑張って乗り切ろうとした矢先、GHDLだと少し書き方
が違うところがあることが判明。

んならいいや、とXilinxのISE9.2iをvmware越しに使うことが
決定されたのであった。それじゃー、仕方あるめぇ。

vi/emacsでプログラムを書けるってのは幸せなんだがなー。
統合環境は未だに不安だ。なんか信用していないっていうか、
どううごいているのか分からないと、紙が無いトイレの前で
千円札を握りしめながら、もう一歩たりとも動けないこの状況を
どう打開するべきなのかを考えているような不安さがある、



、、、、全然違うか。。。。
そろそろ真面目にVHDLを勉強し始めた。
なぜこの忙しい時期に?、と思うだろうが、こういう時期こそ現実逃避が必要なのだ。

高校のときから中間・期末テストの前はなぜかギターが
うまくなったりしていたなぁ。

GHDL
http://eng-osx.sourceforge.net/GHDL.html
% ghdl -a adder.vhdl
% ghdl -a adder_tb.vhdl
% ghdl -e adder_tb
% ghdl -r adder_tb --vcd=adder.vcd

gtkwave
http://eng-osx.sourceforge.net/GTKwave.html
% gtkwave adder.vcd

CNETのnews
http://youtube.com/watch?v=41Z0FJYBd5U

しーる張ればオッケーなのか!
ライセンス的にはアウトだと中の人が言っていたが。。。

ちなみにチップセットやデバイス依存が激しくてなかなか難しいらしいよ。

PCのサポートしてくれればいいのに。。。

MacbookProを320GBディスクに交換してLeopardに完全移行しました。


困った問題は、Tigerから移した自分のファイルに問題があるらしく、

X11があがらない。。。。別ユーザを作るとあがるので、

とにかく自分のフォルダの中の環境に問題があると延々と

調べて1日以上使ってしまいました。


原因は、LeopardからXFree86ではなく、Xorgになり、

そのせいでかなりのXアプリが動かなくなっているらしい。


http://trac.macosforge.org/projects/xquartz/

の最新のパッケージをインストールしたらなおりました。


launchd周辺にも問題があるようです。

とにかく問題の切り分けポイントを当初間違えたため、

本当にたくさんの時間を使ってしまった。


悲しい。。。

最近研究室では、google calendarにみんながスケジュールを突っ込んで、それぞれの状態を知る、という試みをやっています。
スケジュラーに突っ込むと自動的にgoogle calendarと同期してくれれば楽でいいのです。しかしMacOS Xのicalとgcalendarを同期するソフトウェアSpanning Syncという完成度の高いソフトウェアは売り物なので参っていました。

どっちにしてもical -> gcalの片方向でオッケーなのでこういった売り物を使う必要もないわけで、Spanning Syncのトライアル期間が終わってから色々と調べて実験をしてみたのですが、GCALDaemonはical -> gcalがうまくうごかない。うーん。。。設定もめんどくさくて印象が悪い。

昨日見つけたgsyncはical->gcalでは非常に楽に動きました。ユーザインターフェースも良いです。なんとか.confとかいじったりするのが億劫になってきて最近。歳かなー。

gsync
http://www.macness.com/blog/index.php/site/gsync_091/

そのうち売り物になってしまう予感。。。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちMacOS Xカテゴリに属しているものが含まれています。

前のカテゴリはLinksです。

次のカテゴリはMemoです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01