0
我通常在運行配置腳本來靜態鏈接生成的可執行文件時使用「--enable-static」選項。如何在makefile中指定靜態鏈接?
但是,現在我正在編譯g3data,它只帶有makefile(無配置文件)。我嘗試在makefile中添加「-bstatic」選項(「-static」選項在我的系統上不起作用:Mac OS X 10.6.8,請參閱here以獲得解釋),但編譯成功後我可以運行該程序,它不是靜態鏈接...
我該怎麼做才能在這樣的makefile中實現靜態鏈接?以下是我現在所擁有的:
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
通常gcc使用'-static'標誌進行靜態鏈接 - 我期望'-bstatic'給你一個未知的選項錯誤... –
@ChrisDodd是的我從大多數消息來源注意到你應該使用「-static 「,但顯然對於OS X,您應該使用」-bstatic「。我已經在我的問題中添加了關於該信息的鏈接。 – hpy
所以......你正試圖靜態鏈接到共享庫? – Beta