我想在我的android应用程序中使用ffmpeg,考虑到构建库的大小,我决定编写一段c代码来完成一个简单的视频任务。
我在Mac上测试了我的代码,它编译并运行正常。现在对于NDK部分,我无法成功编译,我有几个问题,并希望有人给我一个指南。
任何解释将不胜感激
答案 0 :(得分:1)
当然,静态lib需要针对相同的架构,因此也必须进行交叉编译。
这取决于静态lib的结构。静态库通常只是对象(.o
)文件的存档。因此,如果您的库具有足够小的翻译单元,并且您的程序仅使用其中的一些,则只有这些将真正链接到您的可执行文件。如果您的程序库和使用-ffunction-sections -fdata-sections
(将所有函数和静态存储的所有对象都放在自己的段中)编译,结果可能会更小然后在链接期间传递-Wl,--gc-sections
,因此任何未使用的部分都将被丢弃。另一方面,您可以在一种情况下运行,您可以调用内部需要接近所有其他库代码的lib的某些功能,因此最终几乎将整个库链接到您的可执行文件中。因此:它取决于,尝试一下,如果您关注尺寸,请尝试--gc-sections
。