1

私は通常、構成スクリプトを実行して結果の実行可能ファイルを静的にリンクするときに「--enable-static」オプションを使用します。

ただし、現在、メイクファイルのみが付属するg3dataをコンパイルしようとしています (構成ファイルはありません)。makefile に「-bstatic」オプションを追加しようとしましたが (「-static」オプションは私のシステムでは機能しません: Mac OS X 10.6.8、説明についてはこちらを参照してください)、コンパイルは成功し、実行できますが、プログラム、静的にリンクされていませんでした...

このようなメイクファイルで静的リンクを実現するにはどうすればよいですか? これが私が今持っているものです:

CC=gcc
CFLAGS=-Wall `pkg-config --cflags gtk+-2.0` -arch i386 -arch x86_64 -arch ppc -bstatic
LIBS=`pkg-config --libs gtk+-2.0`
LDFLAGS=-arch i386 -arch x86_64 -arch ppc -bstatic
#bindir ?= /usr/bin
#mandir ?= /usr/share/man

.c.o:
    $(CC) -c $(CFLAGS) $(CPPFLAGS) $<

all: g3data

g3data: main.o sort.o points.o drawing.o #g3data.1.gz
    $(CC) $(CFLAGS) -o g3data main.o sort.o points.o drawing.o $(LIBS) -bstatic
    strip g3data

main.o: main.c main.h strings.h vardefs.h

sort.o: sort.c main.h

points.o: points.c main.h

drawing.o: drawing.c main.h

#g3data.1.gz: g3data.sgml
#   rm -f *.1
#   onsgmls g3data.sgml | sgmlspl /usr/share/sgml/docbook/utils-0.6.14/helpers/docbook2man-spec.pl
#   gzip g3data.1

clean:
    rm -f *.o g3data g3data.1.gz *~ manpage.*

install:
    install g3data $(bindir)
    install g3data.1.gz $(mandir)/man1

uninstall:
    rm $(bindir)/g3data
4

1 に答える 1

3

-bstaticがリンカにとって適切なオプションであり、必要なライブラリの静的バージョンがあると仮定すると、そのオプションを のリストの前に置く必要があると思います.GNUリンカ$(LIBS)オプションのように、-Bstaticライブラリにのみ影響しますオプションのに記載されています。

于 2012-09-30T22:50:29.963 に答える