免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1617 | 回复: 3
打印 上一主题 下一主题

[Linux] 我想集成findutils到自己的程序,有没有办法? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-27 21:43 |只看该作者 |倒序浏览
现在有两个思路
1. 读懂find的源码,然后集成到程序
2. 将find编译成库,然后进行接口调用。

1. 时间紧,水平有限读不懂,放弃了。具体过程就不说了。

2. 修改findutils下面find目录的makefile.am文件,但是无路如何都改不成功。
findutils的目录,是按标准的gnu automake的deep结构来组织的。

我看一下主目录的makefile.am,主要是表示有哪些项目要编译。
于是主要看了find目录下的makefile.am,不长就13行,但是怎么改都改不对。
原来的内容。
AUTOMAKE_OPTIONS = std-options
localedir = $(datadir)/locale
bin_PROGRAMS = find
# noinst_PROGRAMS = regexprops
# regexprops_SOURCES = regexprops.c
find_SOURCES = find.c fstype.c parser.c pred.c tree.c util.c version.c
EXTRA_DIST = defs.h $(man_MANS)
INCLUDES = -I../gnulib/lib -I$(top_srcdir)/lib -I$(top_srcdir)/gnulib/lib -I../intl -DLOCALEDIR=\"$(localedir)\"
LDADD = ../lib/libfind.a ../gnulib/lib/libgnulib.a @INTLLIBS@
man_MANS = find.1
SUBDIRS = testsuite

#$(PROGRAMS): ../lib/libfind.a

我修改后的内容
AUTOMAKE_OPTIONS = foreign
localedir = $(datadir)/locale
lib_LIBRARIES = libmyfind.a
# noinst_PROGRAMS = regexprops
# regexprops_SOURCES = regexprops.c
libmyfind_a_SOURCES = find.c fstype.c parser.c pred.c tree.c util.c version.c
EXTRA_DIST = defs.h $(man_MANS)
INCLUDES = -I../gnulib/lib -I$(top_srcdir)/lib -I$(top_srcdir)/gnulib/lib -I../intl -DLOCALEDIR=\"$(localedir)\"
LDADD = ../lib/libfind.a ../gnulib/lib/libgnulib.a @INTLLIBS@
man_MANS = find.1
SUBDIRS = testsuite

#$(PROGRAMS): ../lib/libfind.a
但是无论修改configure.in 还是修改这个makefile.am都无法编译成功。
一种情况是生成的Makefile.in文件内容仍然是bin_PROGRAMS
一种情况就是根本无法生成正确的结果。

哪位兄弟给个建议,或帮忙改改?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2013-10-27 21:51 |只看该作者
zleoz 发表于 2013-10-27 21:43
现在有两个思路
1. 读懂find的源码,然后集成到程序
2. 将find编译成库,然后进行接口调用。


也可以直接用 exec 或类似接口调用 find,然后解析它返回的结果,这个似乎更简单些。

论坛徽章:
0
3 [报告]
发表于 2013-10-27 22:16 |只看该作者
回复 2# MMMIX

利用exec不是不可以,关键是需要开大内存来存储返回的结果。


   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2013-10-28 09:59 |只看该作者
zleoz 发表于 2013-10-27 22:16
回复 2# MMMIX

利用exec不是不可以,关键是需要开大内存来存储返回的结果。


用管道嘛,逐行处理;没必要把所有结果都获取之后再处理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP