gpt4 book ai didi

Xcode clang 链接 : Build Dynamic Framework (or dylib) not embed dependencies

转载 作者:行者123 更新时间:2023-12-05 01:46:13 27 4
gpt4 key购买 nike

我正在为 iOS 构建一个动态框架。它需要从代码或其他库中引用一些符号,但我不想将它们链接到框架中。

这可以在构建静态库时实现,只需设置搜索路径并确保它们不包含在目标的构建阶段。

但是在构建动态框架或dylib时,会出现 undefined symbol 错误。我尝试了各种链接选项,例如 -l -weak_library -weak_framework -I -rpath -rpath-link。但都不起作用。

链接命令如下所示:

clang -arch x86_64 -dynamiclib
-isysroot *iPhone_SDK_PATH*
*OPTIONS_NOT_IMPORTANT*
-install_name @rpath/Foo.framework/Foo
-Xlinker -rpath -Xlinker @executable_path/Frameworks
-Xlinker -rpath -Xlinker @loader_path/Frameworks
-Xlinker -rpath -Xlinker *BUILD_PATH*
-mios-simulator-version-min=7.0
-Xlinker -no_deduplicate
-Xlinker -objc_abi_version
-Xlinker 2
-fobjc-arc -fobjc-link-runtime
-framework Foundation
-single_module
-compatibility_version 1
-current_version 1
-Xlinker -dependency_info
-Xlinker *BUILD_PATH*/Foo.build/Objects-normal/x86_64/Foo_dependency_info.dat
-o *BUILD_PATH*/Foo.framework/Foo

最佳答案

clang使用ld命令做最终链接,查了手册发现-U-undefined可以忽略 undefined symbol 。

-U symbol_name

Specified that it is ok for symbol_name to have no definition. With two_levelnamespace, the resulting symbol will be marked dynamic_lookup which means dyld will search all loaded images.

-未定义的治疗

Specifies how undefined symbols are to be treated. Options are: error, warning, suppress, or dynamic_lookup. The default is error.

所以最终的解决方案是将-Wl,-undefined,dynamic_lookup设置为OTHER_LDFLAGS,同时确保搜索路径设置正确。它有效。

关于Xcode clang 链接 : Build Dynamic Framework (or dylib) not embed dependencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36662920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com