【问题标题】:How do I make a Mach-O binary from an object file?如何从目标文件制作 Mach-O 二进制文件?
【发布时间】:2010-05-07 03:29:26
【问题描述】:

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

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

如何使用 ld 引用 libc?

【问题讨论】:

    标签: macos linker


    【解决方案1】:

    您需要将目标文件调用的库添加到ld 调用中——以静态或动态形式。对于printf,我想你尤其想要/usr/lib/libc.dylib

    【讨论】:

    • 如果我这样做ld -e _main source.o /usr/lib/libc.dylib ,我会得到ld: symbol dyld_stub_binding_helper not defined (usually in crt1.o/dylib1.o/bundle1.o) for inferred architecture x86_64
    • @Mike,所以您还需要在 ld 命令行中使用 /usr/lib/crt1.o
    • 链接有效,但我遇到了段错误:程序收到信号 EXC_BAD_ACCESS,无法访问内存。原因:13 在地址:0x0000000000000000 0x00007fff5fc0ff75 in __dyld_stub_binding_helper_interface()
    • @Mike,抱歉,我没有想法(我不知道在ld 选项或参数方面还缺少什么)。
    • 发现问题 - 我指定了我自己的入口点,它禁止 libc 初始化程序运行。取出 -e arg 解决了问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2015-02-24
    • 1970-01-01
    相关资源
    最近更新 更多