指示gnu make只使用静态库
Instruct gnu make to use only static libraries
我想这样做:
有一个用c/c++编写的项目,我想编译并部署到Android设备上。
我希望这个项目引用的每个库都静态地链接到整个编译,以便我可以获得一个自包含的二进制文件(或其中的一对)。
问题1:经过搜索,我发现有两种或多或少的库,动态和静态。我的问题是,我是否必须提供静态库,或者gcc工具链是否能够以某种方式从头文件编译它们?
问题2:当搜索静态链接时,我只发现了只对有限数量的库和目标文件使用标志的例子。我想要一个递归函数。那就是"为项目中的每个库引用链接它的静态版本"。如果没有这样的版本,编译并链接它(这是可能的吗?)
库不能从头文件编译。您需要所需的所有库的源代码。通常,这样的源带有它们的构建脚本,这些脚本可能允许选择静态或共享目标。不幸的是,在某些情况下,只支持一种目标类型。
通常,我们单独构建第三方库,使用他们的构建脚本(一些涉及独立的工具链,其他可能使用CMake来配置,然而其他的和他们的份额随着Android平台的普及而增加 -提供Android。mk构建脚本,并使用方便的ndk-build
命令编译。
无论如何,使用这些库的应用程序必须包含对所有这些库的显式引用,通常通过将include $(PREBUILT_STATIC_LIBRARY)
添加到其Android.mk。但是如果你在一个目录下有很多库,你可以使用gnu-make通配符,例如
LOCAL_LDLIBS += -Ljni/libs $(patsubst jni/libs/lib%.a,-l%,$(wildcard jni/libs/lib*.a))
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- #为""定义宏;静态";针对不同的上下文
- cmake如何在fedora工作站中找到boost静态库包
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将公共但非静态的成员函数与ALGLIB集成
- cmake在我的项目中所需的所有静态库都不成功
- C++从另一个类访问公共静态向量的正确方法是什么
- 基于boost的程序的静态链接——zlib问题
- 在静态库中嵌入类方法
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 如何在C++中获得"静态纯虚拟"功能?
- 私有类型的静态常量成员
- 将静态库与gnu g 链接:没有这样的文件或目录,makefile
- C Gnu makefile我无法用ar创建静态库
- 静态构建Qt后,我无法在Windows 7上编译/链接应用程序(GNU分配器错误)
- G++ 4.6 -std=gnu++0x:静态局部变量构造函数调用计时和线程安全
- GNU Automake - 构建静态链接到其依赖项的动态库
- 指示gnu make只使用静态库
- 警告:非静态数据成员初始化器只能使用-std=c++11或-std=gnu++11[默认启用]
- 链接静态库与gnu g++,没有这样的文件或目录