有3个程序文件夹,分别是
flowcalc
libflowcalc
libpjf
当在Linux环境下gcc 编译flowcalc程序文件夹里的任何一个.C文件时候都会提示libpjf程序文件夹下面的main.h和lib.h不存在,同样编译libflowcalc程序文件夹里的任何一个.C文件时候也都会提示libpjf程序文件夹下面的main.h和lib.h不存在,关键是在程序执行前,我已经对libpjf里的makefile文件sudo make了,但是编译的时候还是提示这样的错误。
例如:
$ gcc -c flowcalc.c
flowcalc.c:17:25: 致命错误: libpjf/main.h:没有那个文件或目录
编译中断。
1
yksoft1 2015-02-24 22:18:34 +08:00
加一个 -I../libpjf/include 之类 参数看看
|
2
moxiaotiao OP @yksoft1 按你说的办法,可以生成.o文件了,但是直接执行./*.o文件提示无法执行二进制文件
|
3
yksoft1 2015-02-24 23:29:53 +08:00
@moxiaotiao 加一个ld,输入你所有的o试试看
|
4
pathletboy 2015-02-24 23:43:19 +08:00
把-c参数去了,-c是只编译,不链接。
|
5
moxiaotiao OP @yksoft1 你好,我在生成libflowcalc.so库文件时候执行makefile中的命令
g++ libflowcalc.c -o libflowcalc.so -shared -lpjf -lpcre -ltrace -lflowmanager 提示下面错误,不晓得什么意思 libflowcalc.c: 在函数‘void flow_summarize(lfc*, lfc_ext*)’中: libflowcalc.c:40:14: 警告: ‘void *’型指针用在了算术表达式中 [-Wpointer-arith] libflowcalc.c: 在函数‘void per_packet(lfc*, libtrace_packet_t*)’中: libflowcalc.c:228:14: 警告: ‘void *’型指针用在了算术表达式中 [-Wpointer-arith] |
6
yksoft1 2015-02-25 21:02:58 +08:00
@moxiaotiao 这几行不是错误啊,
|
7
moxiaotiao OP @yksoft1 意思是这个警告不影响.so库文件的生成?
|
8
moxiaotiao OP @yksoft1 我把定位错误的两段C++代码copy出来了,帮我看一下哪个地方出问题了,谢谢
static void flow_summarize(struct lfc *lfc, struct lfc_ext *le) { struct lfc_plugin *lp; void *ptr; if (le->done) return; ptr = le->data; tlist_reset(lfc->plugins); while ((lp = (struct lfc_plugin *) tlist_iter(lfc->plugins))) { if (lp->flowcb) lp->flowcb(lfc, lp->pdata, &le->lf, ptr); ptr += lp->datalen; } le->done = true; } struct lfc_plugin *lp; void *ptr; ptr = le->data; tlist_reset(lfc->plugins); while ((lp = (struct lfc_plugin *) tlist_iter(lfc->plugins))) { if (lp->pktcb) lp->pktcb(lfc, lp->pdata, lf, ptr, ts, up, is_new, pkt); ptr += lp->datalen; } lf->ts_last = ts; |
9
moxiaotiao OP @yksoft1 谢谢你啊,整个程序调试成功了,那个确实是个警告,不影响程序的库的生成。再次3Q。
|