お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-09-27 19:36:03

taku_s
メンバ
登録日: 2008-12-14

ライブラリ作成について

たびたび、お世話になります。
以下のようなMakefileで、OBJSが順次
cc -DL_openraw -o openraw.o -c net.c
ar rv libnet.a openraw.o
と実行されると思いますが、
-DL_openrawの部分は何をしているんでしょうか?
ライブラリについてほとんど知識がなく、いろいろ探してみたんですが、
オプションなのかどうかも良く分かりません。

# CFLAGS += -I../libc/include

SRC = net.c
OBJS = openraw.o closeraw.o setifflags.o resetifflags.o setifaddr.o \
    setifdstaddr.o setifbrdaddr.o setifnetmask.o setifmtu.o \
    addroute.o maskaddress.o setifhwaddr.o

LIBNET = libnet.a

all: $(LIBNET)

$(LIBNET): $(LIBNET)($(OBJS))
    $(RANLIB) $(LIBNET)

$(LIBNET)($(OBJS)): $(SRC)
    $(CC) $(CFLAGS) -DL_$(basename $*) -o $(basename $*).o -c $^
    $(AR) rv $(LIBNET) $(basename $*).o

romfs:

clean:
    -rm -f $(LIBNET) *.o

オフライン

 

#2 2010-09-27 23:28:12

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: ライブラリ作成について

taku_s による投稿:

cc -DL_openraw -o openraw.o -c net.c

-D<マクロ名>
 マクロ文字列を定義する
 マクロ名の有無で、ソースをスイッチしたりするのに使う
-o <出力ファイル名>
-c <コンパイルのみを行う>

オフライン

 

#3 2010-09-27 23:31:37

vbk
メンバ
From: Lake Hamana in Hamamatsu
登録日: 2009-12-22

Re: ライブラリ作成について

これはライブラリとは関係なく、マクロに関係するオプションです。

ソースコード中に「L_openraw」という変数らしいものがあると思うのですが、-DL_openrawオプションをつけることによって、ソースコードをコンパイルするときにL_openrawが1に置き換えられます。

このあたりが参考になるでしょうか。
http://www.cqpub.co.jp/interface/column/freesoft/2003/200311/1.htm

オフライン

 

#4 2010-09-27 23:33:19

vbk
メンバ
From: Lake Hamana in Hamamatsu
登録日: 2009-12-22

Re: ライブラリ作成について

おっとスミマセン。投稿が重なってしまいました。

オフライン

 

#5 2010-09-28 09:10:46

taku_s
メンバ
登録日: 2008-12-14

Re: ライブラリ作成について

siさま vbkさま
詳しく解説していただき、ありがとうございました。

オフライン

 

Board footer

Powered by FluxBB