URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 25628
[ Назад ]

Исходное сообщение
"Ткните носом не пойму что он от меня хочет?"

Отправлено yaya , 27-Янв-03 22:39 
Не могу понять что не так !
Проблема при сборке NeTAMS. Я так понял что нет db.h в
/usr/local/include хотя он там есть.

Что не так ткните носом :-)
Надеюсь на помощь.

ЛОГ!!!

make[1]: Вход в каталог `/home/prog/netams-3.1.1404/src'

g++ -g -pthread -Wall -I/usr/local/include -DLINUX -D_GNU_SOURCE
-DUSE_MYSQL
-Wno-trigraphs -DIPTBL_PFSET -DMAX_QUOTA=64 -c -o st_hash.o st_hash.c
  cc1plus: warning: changing search order for system directory
"/usr/local/include"
cc1plus: warning: as it has already been specified as a non-system
directory
st_hash.c:15:20: db1/db.h: No such file or directory
st_hash.c:18: `DB' was not declared in this scope
st_hash.c:18: `db' was not declared in this scope
st_hash.c:18: parse error before `*' token
st_hash.c:19: `DB' was not declared in this scope
st_hash.c:19: `db' was not declared in this scope
st_hash.c:19: parse error before `*' token
st_hash.c: In function `void stOpenHash(Service*)':
st_hash.c:47: `DB' undeclared (first use this function)
st_hash.c:47: (Each undeclared identifier is reported only once for each
unction it appears in.)
st_hash.c:47: parse error before `)' token
st_hash.c:56: parse error before `)' token
st_hash.c: In function `void stCloseHash(Service*)':
st_hash.c:65: `db1' undeclared (first use this function)
st_hash.c:66: `db2' undeclared (first use this function)
st_hash.c:68: parse error before `)' token
st_hash.c:69: parse error before `)' token
st_hash.c: In function `void stSaveHash(Service*, Message*)':
st_hash.c:96: parse error before `)' token
st_hash.c:102: parse error before `)' token
st_hash.c:111: parse error before `)' token
st_hash.c:85: warning: unused variable `ServiceStorage_cfg*cfg'
st_hash.c: At global scope:
st_hash.c:121: `db' was not declared in this scope
st_hash.c:121: parse error before `*' token
st_hash.c: In function `int stSaveHashRaw(...)':
st_hash.c:122: `DBT' undeclared (first use this function)
st_hash.c:122: parse error before `,' token
st_hash.c:125: `db' undeclared (first use this function)
st_hash.c:127: `k' undeclared (first use this function)
st_hash.c:127: `key' undeclared (first use this function)
st_hash.c:127: `v' undeclared (first use this function)
st_hash.c:127: `value' undeclared (first use this function)
st_hash.c: In function `void stLoadHash(Service*, Message*)':
st_hash.c:150: parse error before `)' token
st_hash.c:156: parse error before `)' token
st_hash.c:162: parse error before `)' token
st_hash.c:168: parse error before `)' token
st_hash.c:174: parse error before `)' token
st_hash.c:180: parse error before `)' token
st_hash.c:189: parse error before `)' token
st_hash.c:195: parse error before `)' token
st_hash.c:204: parse error before `)' token
st_hash.c:140: warning: unused variable `ServiceStorage_cfg*cfg'
st_hash.c: At global scope:
st_hash.c:218: parse error before `*' token
st_hash.c: In function `int stLoadHashRaw(...)':
st_hash.c:219: parse error before `,' token
st_hash.c: In function `void stSyncHash(Service*)':
st_hash.c:244: parse error before `)' token
st_hash.c:244: parse error before `)' token
st_hash.c:245: parse error before `)' token
st_hash.c:245: parse error before `)' token
make[1]: *** [st_hash.o] Ошибка 1
make[1]: Выход из каталог `/home/prog/netams-3.1.1404/src'
make: *** [all] Ошибка 2


Содержание

Сообщения в этом обсуждении
"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено shaman , 28-Янв-03 11:32 
>Не могу понять что не так !
>Проблема при сборке NeTAMS. Я так понял что нет db.h в
>/usr/local/include хотя он там есть.
>
>Что не так ткните носом :-)
> Надеюсь на помощь.
>
> ЛОГ!!!
>
> make[1]: Вход в каталог `/home/prog/netams-3.1.1404/src'
>
> g++ -g -pthread -Wall -I/usr/local/include -DLINUX -D_GNU_SOURCE
> -DUSE_MYSQL
> -Wno-trigraphs -DIPTBL_PFSET -DMAX_QUOTA=64 -c -o st_hash.o st_hash.c
>  cc1plus: warning: changing search order for system directory
> "/usr/local/include"
> cc1plus: warning: as it has already been specified as a non-system
>
> directory
> st_hash.c:15:20: db1/db.h: No such file or directory
> st_hash.c:18: `DB' was not declared in this scope
> st_hash.c:18: `db' was not declared in this scope
> st_hash.c:18: parse error before `*' token
> st_hash.c:19: `DB' was not declared in this scope
> st_hash.c:19: `db' was not declared in this scope
> st_hash.c:19: parse error before `*' token
> st_hash.c: In function `void stOpenHash(Service*)':
> st_hash.c:47: `DB' undeclared (first use this function)
> st_hash.c:47: (Each undeclared identifier is reported only once for each
> unction it appears in.)
> st_hash.c:47: parse error before `)' token
> st_hash.c:56: parse error before `)' token
> st_hash.c: In function `void stCloseHash(Service*)':
> st_hash.c:65: `db1' undeclared (first use this function)
> st_hash.c:66: `db2' undeclared (first use this function)
> st_hash.c:68: parse error before `)' token
> st_hash.c:69: parse error before `)' token
> st_hash.c: In function `void stSaveHash(Service*, Message*)':
> st_hash.c:96: parse error before `)' token
> st_hash.c:102: parse error before `)' token
> st_hash.c:111: parse error before `)' token
> st_hash.c:85: warning: unused variable `ServiceStorage_cfg*cfg'
> st_hash.c: At global scope:
> st_hash.c:121: `db' was not declared in this scope
> st_hash.c:121: parse error before `*' token
> st_hash.c: In function `int stSaveHashRaw(...)':
> st_hash.c:122: `DBT' undeclared (first use this function)
> st_hash.c:122: parse error before `,' token
> st_hash.c:125: `db' undeclared (first use this function)
> st_hash.c:127: `k' undeclared (first use this function)
> st_hash.c:127: `key' undeclared (first use this function)
> st_hash.c:127: `v' undeclared (first use this function)
> st_hash.c:127: `value' undeclared (first use this function)
> st_hash.c: In function `void stLoadHash(Service*, Message*)':
> st_hash.c:150: parse error before `)' token
> st_hash.c:156: parse error before `)' token
> st_hash.c:162: parse error before `)' token
> st_hash.c:168: parse error before `)' token
> st_hash.c:174: parse error before `)' token
> st_hash.c:180: parse error before `)' token
> st_hash.c:189: parse error before `)' token
> st_hash.c:195: parse error before `)' token
> st_hash.c:204: parse error before `)' token
> st_hash.c:140: warning: unused variable `ServiceStorage_cfg*cfg'
> st_hash.c: At global scope:
> st_hash.c:218: parse error before `*' token
> st_hash.c: In function `int stLoadHashRaw(...)':
> st_hash.c:219: parse error before `,' token
> st_hash.c: In function `void stSyncHash(Service*)':
> st_hash.c:244: parse error before `)' token
> st_hash.c:244: parse error before `)' token
> st_hash.c:245: parse error before `)' token
> st_hash.c:245: parse error before `)' token
> make[1]: *** [st_hash.o] Ошибка 1
> make[1]: Выход из каталог `/home/prog/netams-3.1.1404/src'
> make: *** [all] Ошибка 2

Не может найти хедеры BerkeleyDB.
Поищи db.h, добавь путь в makefile.
Если файла нет - 2 пути.
Если дистр основан на rpm, посмотри, установлен ли пакет db-devel (или что-то в этом роде). В противном случае поставь BerkeleyDB из исходников.


"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено yaya , 28-Янв-03 15:12 
В том то и дело что Berkeley DB поставил из исходников.
Фаил db.h лежит там где он его ищет (я так понимаю) в /usr/local/include
и он там есть.

"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено yaya , 28-Янв-03 23:23 
А где в make файле прописывать надо?
Или что ещё можно сделать?

"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено yaya , 28-Янв-03 23:29 
Оказывается что и я правилино сделал и сдесь мне правильно посоветовали просто надо Berekely DB версии 1 а не 4 :-)

"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено shaman , 29-Янв-03 11:20 
>Оказывается что и я правилино сделал и сдесь мне правильно посоветовали просто
>надо Berekely DB версии 1 а не 4 :-)
Надо было базу компилить с опцией --enable-compat185


"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено nece , 29-Янв-03 18:59 
>Надо было базу компилить с опцией --enable-compat185

Попробовал, всёравно ругается!


"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено nece , 29-Янв-03 19:50 
Мне посоветовали поставить Berekely DB версии 1 а не 4.
Где можно дабыть src или rpm -ку?

"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено lavr , 29-Янв-03 19:56 
>Мне посоветовали поставить Berekely DB версии 1 а не 4.
>Где можно дабыть src или rpm -ку?

известно где, на слипикет:

http://www.sleepycat.com/download/index.shtml


"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено yaya , 30-Янв-03 00:12 
>http://www.sleepycat.com/download/index.shtml

Там тольк версия 4 а версию 1 где можно найти.


"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено shaman , 30-Янв-03 11:43 
>>http://www.sleepycat.com/download/index.shtml
>
>Там тольк версия 4 а версию 1 где можно найти.
Ты сказал, что после сборки базы с опцией --enable-compat185 все равно ругается. Как ругается? Как в первый раз?
Так в первый раз он просто не мог найти файл db.h
Найди поиском файл db.h
Потом в файле st_hash.c в 15 строке исправь:
include </full/path/to/db.h>



"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено nece , 30-Янв-03 13:02 
По умолчанию в st_hash.c

#include "netams.h"

#ifndef LINUX
#include <db.h>
#else
#include <db1/db.h> - 15-ая строка
(изменил на #include </usr/local/include/db.h>

#endif


И новая ошибка

[root@gw netams-3.1.1404]# make
cd src && make netams
make[1]: Вход в каталог `/home/prog/netams-3.1.1404/src'
g++ -g -pthread -Wall  -I/usr/local/include -DLINUX -D_GNU_SOURCE -DUSE_MYSQL -Wno-trigraphs -DIPTBL_PFSET   -c -o st_hash.o st_hash.c
cc1plus: warning: changing search order for system directory "/usr/local/include"
cc1plus: warning:   as it has already been specified as a non-system directory
st_hash.c: In function `void stOpenHash(Service*)':
st_hash.c:47: `dbopen' undeclared (first use this function)
st_hash.c:47: (Each undeclared identifier is reported only once for each function it appears in.)
st_hash.c: In function `void stCloseHash(Service*)':
st_hash.c:72: too few arguments to function
st_hash.c:77: too few arguments to function
st_hash.c: In function `int stSaveHashRaw(DB*, char*, char*)':
st_hash.c:128: cannot convert `DBT*' to `DB_TXN*' in argument passing
st_hash.c: In function `int stLoadHashRaw(DB*, char*, char*)':
st_hash.c:225: cannot convert `DBT*' to `DB_TXN*' in argument passing
make[1]: *** [st_hash.o] Ошибка 1
make[1]: Выход из каталог `/home/prog/netams-3.1.1404/src'
make: *** [all] Ошибка 2
[root@gw netams-3.1.1404]#


"Ткните носом не пойму что он от меня хочет?"
Отправлено nece , 30-Янв-03 13:54 

1 Ребят, короче я заколебался и решил дай попробую просто скапировать db.h
из db-1.85.tar.gz в /usr/local/include. Скопировал запустил make всё проблема с st_hash исчезла т.к он это место проскочил. За то появиля вопрос
можно ли так было делать (установить db-4.25 с --enable-compat185 а потом из db-1.85 скопировать db.h в /usr/local/include и заменить тот который был)?

2 И опять аоявилась ошибка

g++ main.o common.o versions.o connections.o parse.o security.o services.o s_server.o users.o net_units.o s_processor.o messages_fifo.o s_datasource.o policy.o s_storage.o st_hash.o st_sql.o p_prefix.o alert_report.o s_scheduler.o ds_netflow.o s_html.o s_monitor.o s_quotactl.o       s_weblogin.o s_pvmgate.o versions_build.o -pthread -lutil -lpcap -lipq -ldb1 -lmysqlclient -L/usr/lib/mysql -lz -o netams
/usr/bin/ld: cannot find -lipq
collect2: ld returned 1 exit status
make[1]: *** [netams] Ошибка 1
make[1]: Выход из каталог `/home/prog/netams-3.1.1404/src'
make: *** [all] Ошибка 2
[root@gw netams-3.1.1404]#

Как я понял он не может найти ipq, что это такое и где его можно взять.


"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено nece , 30-Янв-03 20:38 
Или я не прав подскажите пожалуйста
P.S я уже замучился его собирать

"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено yaya , 31-Янв-03 00:19 
Плиз хоть намекните

"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено shaman , 31-Янв-03 10:57 
>Плиз хоть намекните
Библиотеку не может найти. Что это за библиотека - не знаю.
Попробуй в makefile убрать -lipq


"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено nece , 31-Янв-03 13:43 
OK

"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено nece , 31-Янв-03 18:54 
>>Плиз хоть намекните
>Библиотеку не может найти. Что это за библиотека - не знаю.
>Попробуй в makefile убрать -lipq

Не фига !
Если убираю его в Makefile то вылетает ошибка что мол не может найти -ldb1
хотя Berekely у меня стоит!


"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено yaya , 02-Фев-03 22:36 
Я так понимаю что если убрать ipq то следующее что он не может найти это
db1. Я уже не знаю чего не так. Iptables стоит, Berekely тоже, хотя есть и но:
1 После совета откомпилить Berekely 4.25 с ключом --enable-compact185
NeTAMS всёравно не хотел компилиться мол не мог найти db.h. Я тогда взял db.h из версии 1.85 и поместил в /usr/local/include после чего NeTAMS всё нашёл.

2 Сказали что ipq мол есть в iptables. Тогда я скачал iptables-1.2.7a скомпилил, установил, и пересобрал ядро. Но забыл удалить старую версию iptables-1.2.6a-mdk.rpm которая шла по умолчанию в дестрибутиве.

Это может отрозится на нормальную компеляцию программы?

Вот весь Makefile NeTAMS

#*************************************************************************
#***     Authentication, authorization, accounting + firewalling package
#***     (c) 1998-2001 Anton Vinokurov, anton@inorg.chem.msu.ru
#***        
#*************************************************************************
#LIB = -pthread -lutil -lpcap -lmysqlclient -L/usr/local/lib/mysql
#DEFINE += -DFREEBSD -DUSE_MYSQL
##########################################################################
# for Linux, uncomment this
LIB = -pthread -lutil -lpcap -lipq -ldb1 -lmysqlclient -L/usr/lib/mysql -lz
DEFINE += -DLINUX -D_GNU_SOURCE -DUSE_MYSQL -Wno-trigraphs
#
# Uncomment this if you are using iptables 1.2.5 or greater
DEFINE += -DIPTBL_PFSET
##########################################################################
# Define here a PATH variables
PATH_TO_CONFIG="/usr/local/etc/netams.cfg"
PATH_TO_LOG="netams.log"
#
# Uncomment this if you want to log dropped packets
# DEFINE += -DLOG_DROP
# Uncomment this if you need in large quota table
# (default is max 32 quotas, 32 units in each)
DEFINE += -DMAX_QUOTA=64
##########################################################################
# EXPERIMENTAL!!! DO NOT UNCOMMENT!!!
# DEFINE += -DPVM
# LIB += -L/usr/local/lib -lgpvm3 -lpvm3
##########################################################################
PROG= netams
SRC= main.c common.c versions.c connections.c parse.c security.c services.c \
s_server.c users.c net_units.c s_processor.c messages_fifo.c s_datasource.c \
policy.c s_storage.c st_hash.c st_sql.c p_prefix.c alert_report.c s_scheduler.c \
ds_netflow.c s_html.c s_monitor.c s_quotactl.c    s_weblogin.c s_pvmgate.c

HEADERFILES = netams.h connections.h common.h security.h services.h users.h \
net_units.h messages_fifo.h policy.h st_any.h policy_prefix.h alert_report.h \
versions.sh versions_build.dat

CC    = g++
FLAGS    = -g -pthread -Wall
INCLUDE=/usr/local/include
OBJ    = $(SRC:.c=.o)
CFLAGS    = $(FLAGS) -I$(INCLUDE) $(DEFINE)

all:
    cd src && make $(PROG)

clean:
    cd src && rm -rf $(OBJ) $(PROG) netamsctl flowprobe netamsctl.o flowprobe.o \
    versions_build.o core *.core

backup:
    rm -rf TEMP; mkdir TEMP; mkdir TEMP/netams-3.1.`cat src/versions_build.dat`; \
    cp -Rp src doc cgi-bin Copyright Makefile addon TEMP/netams-3.1.`cat src/versions_build.dat`; \
    cd TEMP ; tar -z -c -v --exclude *.ttf --exclude *CVS*  --exclude *.o --exclude *.bak --exclude *~ \
     -f netams-3.1.`cat ../src/versions_build.dat`.tar.gz netams-3.1.`cat ../src/versions_build.dat`; \
    mv netams-3.1.`cat ../src/versions_build.dat`.tar.gz ../../web/netams/files/ ; cd .. ; rm -rf TEMP

distrib: clean backup


"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено DPX , 03-Фев-03 15:28 
Смотри в чем фишка!
1) У тебя db1.h должен лежать не в /usr/local/include а в /usr/local/include/db1/. Положи все туда и добавь -I/usr/local/include/db1 в CLFLAGS
2) Добавь в LIB -L/usr/local/lib

Все должно завестись! :)


"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено yaya , 04-Фев-03 22:41 
>Смотри в чем фишка!
>1) У тебя db1.h должен лежать не в /usr/local/include а в /usr/local/include/db1/.
>Положи все туда и добавь -I/usr/local/include/db1 в CLFLAGS
>2) Добавь в LIB -L/usr/local/lib
>
>Все должно завестись! :)

Спасибо :-) попробую!



"RE: Ткните носом не пойму что он от меня хочет?"
Отправлено nece , 05-Фев-03 14:39 
Сделал как ты посоветовал, Слава Богу старые ошибки проскочил :-).
Но выскочила другая:

cd src && make netams
make[1]: Вход в каталог `/home/prog/netams-3.1.1404/src'
./versions.sh "/etc/netams.cfg" "/var/log/NeTAMS/netams.log"
linking for version 1404.2
g++ main.o common.o versions.o connections.o parse.o security.o services.o s_server.o users.o net_units.o s_processor.o messages_fifo.o s_datasource.o policy.o s_storage.o st_hash.o st_sql.o p_prefix.o alert_report.o s_scheduler.o ds_netflow.o s_html.o s_monitor.o s_quotactl.o s_weblogin.o s_pvmgate.o versions_build.o -pthread -lutil -lpcap -lipq -ldb1 -lmysqlclient -L/usr/local/lib -L/usr/lib/mysql -lz -o netams
/usr/bin/ld: cannot find -lipq
collect2: ld returned 1 exit status
make[1]: *** [netams] Ошибка 1
make[1]: Выход из каталог `/home/prog/netams-3.1.1404/src'
make: *** [all] Ошибка 2