首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态编译libmagic (c/c++文件类型检测)

静态编译libmagic (c/c++文件类型检测)
EN

Stack Overflow用户
提问于 2010-01-24 05:11:34
回答 2查看 5.8K关注 0票数 3

感谢那些帮助我完成previous question的人(链接仅供参考)。

我可以将文件fileTypeTest.cpplibmagic.amagic放在一个目录中,然后使用g++ -lmagic fileTypeTest.cpp fileTypeTest进行编译。稍后,我将测试它是否可以在使用MinGW编译的Windows中运行。

我计划在一个小的图形用户界面应用程序中使用libmagic,并且我想静态地编译它以便分发。我的问题是,libmagic似乎需要外部文件magic。(我实际上使用的是我自己的精简和编译版本magic_short.mgc,但我离题了。)

一个棘手的解决方案是将文件编码到应用程序中,根据需要创建(和删除)外部文件。我怎样才能避免这种情况?

为清楚起见,添加了:

magic是一个文本文件,用于描述不同文件类型的属性。当被要求识别文件时,libmagic会通过magic进行搜索。有一个编译过的版本,magic.mgc运行得更快。在决定如何处理文件类型之前,我的应用程序只需要识别一小部分文件类型,因此我将使用自己的magic_short文件来创建magic_short.mgc

EN

回答 2

Stack Overflow用户

发布于 2010-01-24 05:35:42

我可以告诉您如何在中静态编译库-您只需在g++命令的末尾传递.a文件的路径- .a文件就是编译对象(.o)的归档。使用"ldd libdir“将显示动态链接库- ${libdir}/libmagic.so不应该在其中。

至于在外部数据文件中链接...我不知道-你能不能不打包应用程序(.deb|.rpm|.tar.bz2)?在windows上,我会使用NSIS编写一个安装程序。

票数 1
EN

Stack Overflow用户

发布于 2010-01-24 05:55:11

在过去,我已经建立了自解压档案。基本上,它是一个由.zip存档和解压代码组成的.exe文件。下载.exe,运行它,然后扑通一声!您可以拥有任意数量的文件。

http://en.wikipedia.org/wiki/Self-extracting_archive

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2124749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档