つまり普通の gcc でコンパイルされた Python からは、拡張モジュールとしても ctypes を通しても使えないってことかー!
… という訳で、昨日悩んでいた問題は解決してしまった模様。 numpy - Segfault occurs when my shared library is optimized by icc -O3 or -O2 and used via Python ctypes - Stack Overflow で質問したらtalonmiesさんという方が瞬殺してくれました。ありがとう! Stack Overflow 初めて使ったけど、良いシステムですね。
この問題はシミュレーションやってる人には結構深刻だよなあ。 解決するにはふたつ方法がある:
どっちも厳しいな… 前者(1)はそもそもコンパイル通せるのかという問題と、コンパイラが違うバージョンのPythonをどう共存させるかって問題がある。 prefix オプションで違う場所にインストールする感じになるんだろうか。 あとその場合って virtualenv で管理出来るんだろうか。
後者(2)はそもそもその方法をやるのが嫌でPythonのC拡張やらctypesやらに手を出してきた経緯があるので、この便利さを知ったあとでそっちに戻るのは悲しい。 堅実な方法ではあるのだけど。
残る疑問は、Stack Overflowでもコメントに書いたけど以下の2点: