我正在尝试编译sbutils .它带有一个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
谁能帮帮我?
最佳答案
如果你查看链接器找不到的符号的前缀,或者如果你只查看原始Makefile,你可以发现CoreFoundation和SpringBoardServices框架是必要的。进一步检查源代码或 Makefile 将发现代码中使用了 C99 扩展,因此 gcc 需要 -std=gnu99 标志。所以编译使用:
gcc -std=gnu99 -framework CoreFoundation -framework SpringBoardServices -o sbopenurl sbopenurl.c
关于objective-c - 如何编译 sbopenurl (c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8722920/