标签: static-libraries

iOS Static vs Dynamic框架说明

我不得不承认,随着iOS 8的发布,我对iOS中的动态和静态框架感到有些困惑.

我正在寻找一种方法来分发我创建的库,我需要支持iOS 7及更高版本.(注意:这将是一个专有框架.我不能使用可可豆荚,我也不能分发来源).这是我已经知道的:

  • iOS 8为iOS引入了"嵌入式框架",但据我了解,它们不适用于iOS 7,仅适用于iOS 8及更高版本.
  • 我可以选择将我的库分发为静态库(.a文件)并分发标头.我知道这是处理这种情况的常用方法,但我想找到一些比这更简单的东西(如果可能的话,还要用它捆绑一些资源).
  • 我还发现iOS 7不支持动态.framework库(仅静态),因为它不支持动态链接.但是iOS 8和静态链接一样.

以下是关于此信息的问题:

  • 我看到我可以创建一个.framework目标,并通过将Mach-O类型更改为"静态库"使其成为静态.这是否足以支持iOS 7而没有任何问题,并且还可以将我的库分发为.framework bundle?如果是这样的话,为什么iOS 8中的"嵌入式框架"是一个很大的交易,因为互联网上的许多资源都在暗示?我错过了什么?
  • 是否有必要对.framework进行编码,就像我对其他任何应用程序一样?
  • 如果我需要在我的.framework文件中包含其他资源(如核心数据或图像),该怎么办?我需要为此制作一个单独的.bundle文件吗?

frameworks static-libraries static-linking ios ios-frameworks

107
推荐指数
5
解决办法
3万
查看次数

静态链接只有一些库

在与GCC链接时,如何仅将某些特定库静态链接到我的二进制文件?

gcc ... -static ...尝试静态链接所有链接库,但我没有其中一些的静态版本(例如:libX11).

linker gcc static-libraries

99
推荐指数
6
解决办法
15万
查看次数

Xcode 4无法从静态库依赖项中找到公共头文件

替代标题以帮助搜索

  • Xcode找不到标题
  • 在Xcode中缺少.h
  • 找不到Xcode .h文件
  • 未找到词法或预处理器问题文件

我正在开发一个来自Xcode 3的iOS应用程序项目.我现在已经转移到Xcode 4,我的项目构建了许多静态库.

这些静态库还声明了公共头文件,这些头文件由应用程序代码使用.在Xcode 3.x中,标题被复制(作为构建阶段)public headers directory,然后在应用程序项目中public headers directory被添加到headers search list.

在Xcode 4下,构建目录被移动到~/Library/Developer/Xcode/DerivedData/my-project.

问题是我如何在标题搜索设置中引用这个新位置?看起来:

  • public headers directory是相对于DerivedData目录,但是
  • headers search 目录是相对于其他东西(可能是项目位置)

我应该如何在Xcode 4中为iOS开发设置静态库目标,以确保在尝试编译为依赖项时,使用静态库的客户端可以使用头文件?

preprocessor header static-libraries xcode4

91
推荐指数
4
解决办法
7万
查看次数

静态链接libstdc ++:任何陷阱?

我需要使用GCC 4.7的libstdc ++将构建在Ubuntu 12.10上的C++应用程序部署到运行Ubuntu 10.04的系统,该系统附带了相当旧版本的libstdc ++.

目前,-static-libstdc++ -static-libgcc正如本博客文章所建议的那样,我正在编译:静态链接libstdc ++.作者在静态编译libstdc ++时警告不要使用任何动态加载的C++代码,这是我尚未检查的内容.到目前为止,一切似乎都很顺利:我可以在Ubuntu 10.04上使用C++ 11功能,这就是我所追求的.

我注意到这篇文章是从2005年开始的,从那以后可能发生了很大变化.它的建议仍然是最新的吗?我应该注意哪些潜在的问题?

c++ linux gcc static-libraries libstdc++

81
推荐指数
2
解决办法
5万
查看次数

如何将两个"ar"静态库合并为一个?

我有2个静态的Linux库,通过创建ar cr,libabc.alibxyz.a.
我想将它们合并到一个静态库中libaz.a.
我怎样才能做到这一点.

我想创建一个合并的静态库,而不是让两个库都给应用程序的最终链接.

linux static-libraries unix-ar

80
推荐指数
3
解决办法
7万
查看次数

什么是静态库的内部.lib文件,静态链接的动态库和动态链接的动态库?

什么是静态库的.lib文件,静态链接的动态库和动态链接的动态库?

为什么在动态链接的动态库中不需要.lib文件,而且在静态链接中,.lib文件只是一个包含所有方法的.obj文件.那是对的吗?

c++ dll linker static-libraries

75
推荐指数
4
解决办法
6万
查看次数

如何告诉CMake链接到源目录中的静态库?

我有一个带有Makefile的小项目,我试图转换为CMake,主要是为了获得CMake的经验.出于此示例的目的,项目包含一个源文件(C++,虽然我认为该语言不是特别相关)和一个我从其他地方复制过的静态库文件.为了论证,假设库的源代码不可用; 我只有.a文件和相应的标题.

我手工制作的Makefile包含以下构建规则:

main: main.o libbingitup.a
    g++ -o main main.o libbingitup.a
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.我如何告诉CMake重现这个?当然,这不是字面上的精确makefile,而是包含等效链接命令的东西.我尝试过明显但天真的方式,比如

add_executable(main main.cpp libbingitup.a)
Run Code Online (Sandbox Code Playgroud)

要么

add_executable(main main.cpp)
target_link_libraries(main libbingitup.a)
Run Code Online (Sandbox Code Playgroud)

以及与各种事物link_directories(.)add_library(bingitup STATIC IMPORTED)等,但没有到目前为止,结果在一个成功的连锁.我该怎么办?


版本详细信息:Linux(Kubuntu 12.04)上的CMake 2.8.7和GCC 4.6.3

cmake static-libraries

74
推荐指数
3
解决办法
15万
查看次数

如何检查是否为64位构建静态库?

我刚刚为iOS构建了一个静态库,并将Architectures的构建设置设置为$(ARCHS_STANDARD_INCLUDING_64_BIT).

我想确保.a库正确包含该体系结构,但是当我运行lipo -info它时,我看到:

fat文件中的体系结构:library.a是:armv7 armv7s(cputype(16777228)cpusubtype(0))

这是否意味着不包括arm64?如果lipo命令无法告诉我,还有另一种说法吗?

我正在安装最新的Command Line Tools运行Xcode 5.

objective-c static-libraries ios lipo

73
推荐指数
3
解决办法
5万
查看次数

更新到Xcode 5 - ld:未找到架构armv7或armv7s链接器错误的符号

我刚刚将我的iPhone 4S软件更新到iOS 7 Beta 2,而我正在最后接触到一个新的应用程序(Phonegap)..不是一个好主意!

完成后,Xcode没有检测到我的iPhone,所以我安装了Xcode 5 beta.在摆弄它之后我终于得到它来检测我的手机.现在唯一的问题是使用的架构存在错误.

以下是产生的错误:

ld: warning: ignoring file /Users/-----------/Library/Developer/Xcode/DerivedData/testtest-bmnbmujiosugcmgeiceofgcfmsec/Build/Products/Debug-iphoneos/libCordova.a, file was built for archive which is not the architecture being linked (armv7s): /Users/--------/Library/Developer/Xcode/DerivedData/testtest-bmnbmujiosugcmgeiceofgcfmsec/Build/Products/Debug-iphoneos/libCordova.a
Undefined symbols for architecture armv7s:
  "_OBJC_METACLASS_$_CDVCommandDelegateImpl", referenced from:
      _OBJC_METACLASS_$_MainCommandDelegate in MainViewController.o
  "_CDVLocalNotification", referenced from:
      -[AppDelegate application:didReceiveLocalNotification:] in AppDelegate.o
  "_OBJC_CLASS_$_CDVCommandDelegateImpl", referenced from:
      _OBJC_CLASS_$_MainCommandDelegate in MainViewController.o
  "_OBJC_CLASS_$_CDVCommandQueue", referenced from:
      _OBJC_CLASS_$_MainCommandQueue in MainViewController.o
  "_OBJC_METACLASS_$_CDVViewController", referenced from:
      _OBJC_METACLASS_$_MainViewController in MainViewController.o
  "_OBJC_METACLASS_$_CDVCommandQueue", referenced from:
      _OBJC_METACLASS_$_MainCommandQueue in MainViewController.o
  "_CDVPluginHandleOpenURLNotification", referenced from:
      -[AppDelegate application:handleOpenURL:] in AppDelegate.o
  "_OBJC_CLASS_$_CDVViewController", referenced from: …
Run Code Online (Sandbox Code Playgroud)

cpu-architecture static-libraries cordova ios7 xcode5

69
推荐指数
4
解决办法
6万
查看次数

Xcode:复制标题:公共与私有与项目?

我正在构建一个Cocoa Touch静态库.我应该如何决定是否将头文件复制为公共,私有或项目?

xcode header static-libraries

68
推荐指数
2
解决办法
2万
查看次数