如何编译sbopenurl(c)

时间:2012-01-04 06:30:48

标签: objective-c ios

我试图编译sbutils。它带有一个makefile,但每次我尝试编译它时都会出错。这是makefile:

BINS := sblaunch sburlschemes sbopenurl sbbundleids
all: $(BINS)
%: %.c ent.plist
     igcc -o $@ $< -std=gnu99 -framework CoreFoundation -framework SpringBoardServices
     ldid -Sent.plist $@
clean:
    rm -f $(BINS)

它附带了一些工具(sblaunch sburlschemes sbopenurl和sbbundleids),但我只想要sbopenurl我尝试直接使用gcc sbopenurl来编译,但错误与

Undefined symbols:
  "_CFURLCreateWithBytes", referenced from:
      _main in ccMCI3Fd.o
  "_SBSOpenSensitiveURLAndUnlock", referenced from:
      _main in ccMCI3Fd.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

如果查看链接器无法找到的符号前缀,或者只是查看原始Makefile,可以发现框架CoreFoundation和SpringBoardServices是必需的。进一步检查源或Makefile将公开在代码中使用C99扩展,因此gcc需要-std = gnu99标志。所以编译使用:

gcc -std=gnu99 -framework CoreFoundation -framework SpringBoardServices -o sbopenurl sbopenurl.c