このブログを検索

2015/06/27

ささやかな時間を大切に

仲間の一人が入院している病院へ、2回目のお見舞いに行ってきた。

前回は、容態は知ってはいたけど、実感がわかないという状態だったが、今回は恐れていた、いよいよ感をはっきりと悟ってきた。

30年位も前から知りあり、人生の喜怒哀楽のほんの一部だけど確かに共有してきた。

お互いの生活の中で、みんな一時は離れてしまったけど…きっとそれがいけなかったんだろうな。 会い続けていれば⚪︎⚪︎ちゃんも残ったんじゃなかろうか。

ささやかな時間を大切に。

2015/06/12

カブ90で遠出は…

最近仕事が忙しく、土曜も出勤という感じが続いています。

そんな中、今日は少しだけ早めに仕事を切り上げ、カブ90で藤沢方面まで遠回りしてきました。

藤沢街道をひた走り海まで行こう!と思って走りだしたんですが、藤沢まで行った時点でコンビニで珈琲飲んで、時計と相談して戻ってくることにしました。

若い頃のように、延々とどこまでも!というわけには行きませんね。

カブ90ではお尻が痛くなって遠くに行くのは無理だと悟りましたよ。

カブ110では大丈夫なんだけど、90の方はさすがにシートもヘタってきているんでしょう。

家に到着する頃には、痛くて痛くて ^^;

今こうしている間もジンジンしているし。

通勤距離(20km位)がベストな行動範囲ですね。




明日は午前中からハウスメーカーへ行って、午後から仕事。

50歳を迎えて新たな20年に向けたターニングポイントが近づいているような気がします。

もう(若い頃に)夢見たような時代がくるとは思えない…悲しいけれど。

2015/06/02

Linuxにおける動的ライブラリの使用方法


Linuxにおける動的ライブラリの使用方法

.so ライブラリのBuild方法
 gcc -fPIC -c libhello.c -o libhello.lo
 gcc -shared -Wl,-soname,libhello.so libhello.lo -o libhello.so



呼び出し側のコンパイル&リンク
 gcc -c -o call.o call.c
  gcc -o call -L. -lhello call.o


以下、ソースコード

----------------------------------
 <ライブラリ側> 
----------------------------------
■ hello.h
#ifndef __HELLO_H__
#define __HELLO_H__

typedef struct {
    unsigned int data1;
    unsigned int data2;
}STRUCT_TEST_TAB;

void say();

#endif
----------------------------------
■ hello.c
#include <stdio.h>
#include "hello.h"

STRUCT_TEST_TAB gData;

void say() {
gData.data1 = 0;
gData.data2 = 1;
    printf("Hello, World!\n");

    main_cb();  /* 呼び出し側の関数をコール */
}

----------------------------------
 <呼び出し側>
----------------------------------
■ call.c
#include <stdio.h>

/* 構造体参照にはヘッダーが必要 */
/* 関数呼び出しだけなら .so 側のヘッダーは不要 */
#include "hello.h"  

STRUCT_TEST_TAB dData_Main;  /* so側で定義されている構造体参照 */

int main(int argc, char** argv) {
    
    say();  /* soファイル側の関数コール */
    return 0;
}

void main_cb() {
    printf("Main Callback! \n");
}
----------------------------------


※ libhello.so は /usr/lib に置く。 (他に置く場合はLIBPATHを通す)
※ ldconfig /usr/lib  でシステムに認識させること。 これをやらないとなる。

./call: error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directory

ライブラリが正しく動作すると

Hello, World!
Main Callback!