ライブラリ作成途中経過。とりあえずやり方だけ。
$ g++ -g -Wall -fPIC -c test.c $ g++ -shared -o lib.so test.o $ g++ -o main main.c ./lib.so $ ./main
以下オプションの説明。
-Wall
すべての警告を出す
-fPIC
このオプションがターゲットマシンでサポートされていれば、位置独立なコードを出力します。このオプションはダイナミックリンクに適しており、分岐において大きなディスプレースメントを要求する場合にも適応します
-shared
他のオブジェクトとリンクして実行可能プログラムを形成し得る共有オブジェクトを生成します。ごく少数のシステムでのみ、このオプションはサポートされています。
libxxx.so(xxxがライブラリ名)
共有ファイルとは、プログラムが実行するときに呼び出す。そのため、静的ライブラリに比べ実行速度が遅くなる。しかし、その反面、以下のようなメリット、特長がある。
OpenCLで使い時は、1行目と3行目に-lOpenCLのオプションを追加する。
なんか色々書いたけど上のやり方じゃなくても、コンちゃんいわくそんな面倒いことしなくても1行でいけるらしい。。。
$ g++ test.c main.c -o main -lOpenCL $ ./main
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
そんで、Makefileも少し勉強して簡単なやつだけど作ってみた。
main: main.cpp lib.so
g++ -o main main.cpp ./lib.so -lOpenCL
lib.so: api.o
g++ -shared -o lib.so api.o
api.o: api.cpp
g++ -g -Wall -fPIC -c api.cpp -lOpenCL
clean:; rm main *.o *.lib
参考URL
http://blog.livedoor.jp/ha_yshr/archives/51793675.html
http://blog.livedoor.jp/vavacco/archives/665039.html
http://www.am.sanken.osaka-u.ac.jp/~mukaigaw/misc/Makefile.html