2010-05-07 115 views
1

我有一个目标文件,我想将它制作成Mach-O二进制文件(我在Mac OS 10.6上)。运行ld -e _main source.o /usr/lib/libc.dylib产生以下输出:如何从目标文件制作Mach-O二进制文件?

ld: symbol dyld_stub_binding_helper not defined (usually in crt1.o/dylib1.o/bundle1.o) for inferred architecture x86_64 

我怎么可以参考的libc,在使用ld?

回答

2

您需要添加到ld调用对象文件调用的库 - 静态或动态的形式。对于printf,特别是,我认为你想要/usr/lib/libc.dylib

+0

如果我做'ld -e _main source.o /usr/lib/libc.dylib',我得到'ld:symbol dyld_stub_binding_helper没有定义(通常在crt1.o/dylib1.o/bundle1.o中)体系结构x86_64'。 – Mike 2010-05-07 03:37:15

+0

@Mike,所以你还需要''ld'命令行中的'/ usr/lib/crt1.o'。 – 2010-05-07 03:43:53

+0

链接工作,但我得到一个段错误: 编程接收到的信号EXC_BAD_ACCESS,无法访问内存。 原因:13在地址:0x0000000000000000 0x00007fff5fc0ff75在__dyld_stub_binding_helper_interface() – Mike 2010-05-07 03:50:01