2016/09/02

[c/c++]私のC言語 (10) - "-lpthread"と"-pthread"

ようやく10回目を迎えた。
別に回数をどうこうという訳ではないのだがね。

 

このシリーズを書き始めたのは、ネットで検索した情報を見て、「組み込みって、なんかルールがきつそうだからやりたくない」と思われるんじゃなかろうか、と勝手に思ったので、「分野によってはそうでもないのだよ」ということを言いたくて始めたような気がする。

私は、けっこうリソースに余裕がある組み込みをやることが多い。
LinuxのようなOSが動く場合はもとより、ARMだったら32bitだし、RL78は16bitだったのできつかったなぁ、とか、そういう感じだ。

また、nRF51822やESP8266のように機能とセットになったマイコンを使うことも多い。
そうなると、載せ替えるとしても同じマイコン系列になるため、移植性を考えても仕方がないので、そこに時間を割くよりは、さっさと実装してしまおう、となっている。

そこら辺の事情があるから、値がだいたい収まるならintで済ますし、変数宣言の順番も数バイトくらいなら空きがあってもいいや、と思ってわかりやすい順に並べている。
たぶん、そういうのを気にする人と一緒にコーディングしていたら、相手はかなりイライラするんじゃなかろうか。。


本題に戻る。

今回はLinux限定かもしれんが、C11ではスレッドが使えるらしいので将来的にはわからんが、まあLinux限定としよう。

いつからか忘れたが、POSIXスレッドを使ってコンパイルするときのオプションとして「-pthread」があるのに気付いた。
たぶん、どこかの記事を見たのだと思う。
「この人、"l"を忘れてるやん」と思っていたのだが、ライブラリのリンクではなくてオプションだったのだ。

multithreading - Difference between -pthread and -lpthread while compiling - Stack Overflow
どうも、プリプロセスの段階で違いがあるようだ。
確かに私が持っている古いLinuxの本でも「-D_REENTRANT」を指定するように書かれている。

もしかしたらコンパイル段階でも違うかもしれん誌、GCCのバージョンによっても変わってるかもしれんね。

 

まあ、カバレッジも--coverageオプションになったようだし、コンパイル時点で働きかけるというのは流行りなのかもしれん。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。