将开源项目包含在另一个项目中

时间:2012-02-07 20:42:17

标签: c makefile

我搜索并阅读了所有GNU制作手册....但我不能将一个开源项目纳入我的。 你能救我吗?

一个简单的例子: 我想在我的项目中包含coWPAtty,以检查提供的.pcap文件是否具有有效的4次握手。 所以,我只需用=>调用cowpatty main() argc = 4; argv [] = {“my_program”,“ - r”,“pcap_file.pcap”,“ - c”}。但是..如果有2个函数main(),我怎么能编译它? 我尝试将cowpatty main()更改为cow_main()并且它可以工作,但我想知道是否可以使用prepocessor语句或以某种方式保留所有源代码。

我的Makefile就是:

COW_SRC=./cow_src
COW_DEP:= `sed -ne 's/^PROGOBJ[^a-z0-9A-Z]*\(.*\)/\1/gp' < $(COW_SRC)/Makefile`

LDLIBS= -lmagic -lm -lcrypto -lpcap

crack_server: cow
    $(RM) $(COW_SRC)/genpmk.o
    $(CC) $(LDLIBS) -g -o tmp ./tmp.c $(COW_SRC)/*.o

cow:
    make -C $(COW_SRC) $(COW_DEP)

clean:
    for i in $(COW_DEP);\
        do $(RM) $(COW_SRC)/$$i;\
    done;

这是简单的tmp.c

#include <stdio.h>
#include <stdlib.h>
#include <magic.h>


int main(int argc, char *argv[])
{
    cow_main(argc,argv);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

在构建并安装coWPAtty之后,只需使用system从程序中调用它

int main(int argc, char *argv[])
{
    int status = system("cowpatty my_program -r pcap_file.pcap");
    return status;
}