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
任何人都可以帮助我吗?
答案 0 :(得分:1)
如果查看链接器无法找到的符号前缀,或者只是查看原始Makefile,可以发现框架CoreFoundation和SpringBoardServices是必需的。进一步检查源或Makefile将公开在代码中使用C99扩展,因此gcc需要-std = gnu99标志。所以编译使用:
gcc -std=gnu99 -framework CoreFoundation -framework SpringBoardServices -o sbopenurl sbopenurl.c