Tag: 静态库

DLL和LIB文件 – 什么和为什么?

我对DLL和LIB知之甚less,除了它们包含程序正常运行所需的重要代码 – 库。 但为什么编译器生成它们呢? 把所有的代码包含在单个可执行文件中是不是更容易? DLL和LIB有什么区别?

如何使用Android NDK编译静态库?

我试图编译一个静态库在Android上使用,但我不知道如何编译它。 该库使用标准库(stdio.h等)和libxml2。 我正在尝试使用arm-eabi-gcc进行编译,但出现以下错误: /cygdrive/c/android-ndk-r4/build/platforms/android-8/arch-x86/usr/include/asm/posix_types.h:15:28:error:posix_types_64.h:No such file or directory 我如何得到这个工作?

如何将gcc -fvisibility选项应用于静态库中的符号?

我有一个从4静态库( .a )和一个对象( .o )文件构build的共享库项目。 我正在尝试添加-fvisibility=hidden选项,以便将输出中的符号限制为仅在源中使用__attribute__标记的符号。 我已将-fvisibility=hidden选项添加到.so项目(涵盖.o文件)和.a项目的编译选项。 对象文件中的符号按照预期从最终的.so中移除。 但是, .a项目中的符号仍然位于最终的.so文件中。 将-fvisibility=hidden选项添加到.so链接命令不起作用。 我究竟做错了什么? 我的目的是从.so除去除库的接口函数外的所有符号。 编辑:我现在实际上使用版本地图来解决这个问题。 但是,随着外部符号的变化,它需要继续维护版本脚本。 接受的答案有一个更好的主意。

核心数据在iPhone的静态库中

我已经构build了大量使用Core Data框架的静态库。 我可以成功地在我的外部项目中使用库,但只有在主项目中包含.xcdatamodel文件。 这并不理想,因为图书馆的目的是尽可能隐藏实施细节。 在另外一个问题中 ,我被告知,我不能将资源与一个图书馆捆绑在一起(这对我来说是完全有意义的)。 那么是否有一种方法可以在不需要将模型包含在主项目中的情况下以编程方式让模型“被发现”?

如何在OS X上静态链接

我试图链接到OS X上的静态库。我在gcc命令中使用了-static标志,但是我收到以下错误消息: ld_classic:找不到文件:-lcrt0.o collect2:ld返回1退出状态 我查看了man页面,内容如下: 除非所有库(包括libgcc.a)都已经使用-static编译,否则此选项在Mac OS X上将不起作用。 由于既没有提供静态版本的libSystem.dylib也没有提供crt0.o,所以这个选项对大多数人没有用处。 有没有另一种方法链接到这个静态库?

你能从iPhone上的静态库引用Xib文件吗?

在我的应用程序中,我目前已将所有代码分离到一个静态库中,以便更容易地为实际应用程序和unit testing设置我的代码的xcode项目目标。 这个问题是我想我的大部分我的xib文件在静态库中,但似乎是当我运行我的应用程序,并尝试引用xib它找不到它,除非它包含在实际应用程序的目标,而不是静态库目标。 是否有可能在同一个库中的代码引用的静态库中包含xib文件和其他资源,如果是这样,如何?

ld链接器问题: – 整个归档选项

我所看到的–whole-archive连接器选项的唯一真正用处是从静态库创build共享库。 最近我遇到了Makefile(s),它在与内部静态库链接时总是使用这个选项。 这当然会导致可执行文件不必要地引用未引用的目标代码。 我对此的反应是,这显然是错误的,我在这里错过了什么? 我有第二个问题必须处理我阅读有关整个档案选项,但不能parsing。 如果可执行文件还与一个共享库链接,而这个共享库又与静态库(部分)具有相同的目标代码,那么应该在与静态库链接时使用–whole-archive选项。 这就是共享库和静态库在目标代码方面有重叠。 使用此选项将强制所有符号(无论使用)在可执行文件中parsing。 这是为了避免目标代码重复。 这是令人困惑的,如果一个符号在程序中被引用,它必须在链接时唯一地解决,那么这个业务是如何重复的呢? (请原谅,如果这段不是清晰的缩影) 谢谢

将静态库转换为共享库?

我有一个第三方库,主要由大量的静态( .a )库文件组成。 我可以把它编译成一个.a库文件,但是我真的需要它成为一个.so共享库文件。 有没有办法将一个静态的.a文件转换成一个共享的.so文件? 或者更普遍的是,将大量静态.a文件与几个.o对象文件合并为一个.so文件是一种好方法吗?

直接告诉gcc静态链接一个库

我感到奇怪的是,使用-Wl,-Bstatic来告诉gcc我想静态链接哪些库。 毕竟我直接告诉gcc所有关于链接库的其他信息( -Ldir , -llibname )。 是否有可能直接告诉gcc驱动程序哪些库应该静态链接? 澄清:我知道,如果某个库只存在于静态版本中,它将使用它,而不使用-Wl,-Bstatic ,但是我想暗示gcc偏好静态库。 我也知道,直接指定库文件将链接它,但我更喜欢保持包括静态和dynamic库相同的语义。

xcode4中框架和静态库的区别,以及如何调用它们

我对xcode和objective-c相当陌生。 我想问一个非常基本的问题。 我看到,在项目设置中“链接二进制到库”时,从工作区中的其他项目导入的框架和库存在差异。 第一个问题,为什么有一个框架? 为什么有一个图书馆? 我的图书馆不能成为一个框架吗? 然后,从.h文件,我怎么能从我导入的静态库调用类? 我想必须有一个前缀,但我找不到它。 既没有也没有“ProjName / Myclass.h”正在工作。 请尽可能具体。 谢谢