我不得不承认,随着iOS 8的发布,我对iOS中的动态和静态框架感到有些困惑.
我正在寻找一种方法来分发我创建的库,我需要支持iOS 7及更高版本.(注意:这将是一个专有框架.我不能使用可可豆荚,我也不能分发来源).这是我已经知道的:
以下是关于此信息的问题:
frameworks static-libraries static-linking ios ios-frameworks
在与GCC链接时,如何仅将某些特定库静态链接到我的二进制文件?
gcc ... -static ...尝试静态链接所有链接库,但我没有其中一些的静态版本(例如:libX11).
替代标题以帮助搜索
- 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开发设置静态库目标,以确保在尝试编译为依赖项时,使用静态库的客户端可以使用头文件?
我需要使用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年开始的,从那以后可能发生了很大变化.它的建议仍然是最新的吗?我应该注意哪些潜在的问题?
我有2个静态的Linux库,通过创建ar cr,libabc.a和libxyz.a.
我想将它们合并到一个静态库中libaz.a.
我怎样才能做到这一点.
我想创建一个合并的静态库,而不是让两个库都给应用程序的最终链接.
什么是静态库的.lib文件,静态链接的动态库和动态链接的动态库?
为什么在动态链接的动态库中不需要.lib文件,而且在静态链接中,.lib文件只是一个包含所有方法的.obj文件.那是对的吗?
我有一个带有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
我刚刚为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.
我刚刚将我的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) 我正在构建一个Cocoa Touch静态库.我应该如何决定是否将头文件复制为公共,私有或项目?
static-libraries ×10
c++ ×2
gcc ×2
header ×2
ios ×2
linker ×2
linux ×2
cmake ×1
cordova ×1
dll ×1
frameworks ×1
ios7 ×1
libstdc++ ×1
lipo ×1
objective-c ×1
preprocessor ×1
unix-ar ×1
xcode ×1
xcode4 ×1
xcode5 ×1