Perlテックブログ

ITエンジニアの成長意欲を刺激する技術考察、モジュール開発の日記。Perlイベントや国内や海外のPerlの記事の紹介。

ccflagsの取り扱い | SPVM開発日記

gccを使ってコンパイルするのだけれど、そのオプションを構成する方法について考えている。

gccコマンドラインオプションなので、最終的には出力は空白区切りの文字列になる。

でも、プログラムで扱う場合は、配列にしておいてもよい気がするのだけれど、文字列にしておいて、編集するたびに、配列にしてもよいかもとも思う。負荷は小さいし。

CentOSだとPerlデフォルトのccflagsは次のようになっている。

-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64

ccflagsの中に「-I/usr/local/include」のようなC言語ヘッダファイルのインクルードパスが含まれていたりする。

Strawbery Perlだと次のようになっている。

 -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -D__USE_MINGW_ANSI_STDIO -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fwrapv -fno-strict-aliasing -mms-bitfields

以下はldflagだけれど、次のようになっている。これはリンカで使われる。

ldflags =' -fstack-protector -L/usr/local/lib'

ldflagsの中に「-L/usr/local/lib」のようなライブラリのパスが含まれていたりする。

PerlC言語コンパイルされているのだけれど、C++のライブラリを使いたい場合やアセンブラfortranコンパイルしないといけないときは、どうするかなど、これから調査する予定。

ライブラリの使い方も、ソースからコンパイルする方法や、パッケージマネージャなんかで、ライブラリとして用意されているというのもある。非常に、理解するのが難しいけれど、うまく満たせる方法を探す。