Buondì, un altro appuntamento con me che si lamenta di cose che non capisco.
Ero alla ricerca di un programma che trovasse file duplicati, nel mio peregrinare giungo a questo
http://rdfind.pauldreik.se/
non so per quale motivo, ma decido di provarlo
scarico nettle e compilo
Codice:
./configure --prefix="/tmp/spazzatura/"
make
tutto bene
vado con rdfind e...
Codice:
./configure --prefix="/tmp/spazzatura/"
configure: error:
nettle header files missing. Please install nettle
first. If you have already done so and get this error message
anyway, it may be installed somewhere else, maybe because you
don't have root access. Pass CPPFLAGS=-I/your/path/to/nettle to configure
and try again. The path should be so that #include nettle/headerfile.h works.
ok, riproviamo:
Codice:
CPPFLAGS=-I/tmp/spazzatura/include/
LDFLAGS=-L/tmp/spazzatura/lib/
./configure --prefix="/tmp/spazzatura/"
configure: error:
nettle header files missing. Please install nettle
first. If you have already done so and get this error message
anyway, it may be installed somewhere else, maybe because you
don't have root access. Pass CPPFLAGS=-I/your/path/to/nettle to configure
and try again. The path should be so that #include nettle/headerfile.h works.
di nuovo.
...
Alla fine risolvo con un bel
Codice:
./configure CPPFLAGS=-I/tmp/spazzatura/include/ LDFLAGS=-L/tmp/spazzatura/lib/ --prefix="/tmp/spazzatura/"
Ma mi chiedo:
Perché? Perché il primo metodo non funziona? Non è standard? Qualcuno conosce la ragione?
Secondo parte: non volendo installare nettle, avevo bisogno che il binario linkasse staticamente libnettle
Codice:
$ make
make all-am
make[1]: Entering directory `/tmp/spazzatura/include/rdfind-1.3.4'
g++ -DHAVE_CONFIG_H -I. -I/tmp/spazzatura/include/include/ -g -O2 -MT rdfind.o -MD -MP -MF .deps/rdfind.Tpo -c -o rdfind.o rdfind.cc
mv -f .deps/rdfind.Tpo .deps/rdfind.Po
g++ -DHAVE_CONFIG_H -I. -I/tmp/spazzatura/include/bin/include/ -g -O2 -MT Checksum.o -MD -MP -MF .deps/Checksum.Tpo -c -o Checksum.o Checksum.cc
mv -f .deps/Checksum.Tpo .deps/Checksum.Po
g++ -DHAVE_CONFIG_H -I. -I/tmp/spazzatura/include/include/ -g -O2 -MT Dirlist.o -MD -MP -MF .deps/Dirlist.Tpo -c -o Dirlist.o Dirlist.cc
mv -f .deps/Dirlist.Tpo .deps/Dirlist.Po
g++ -DHAVE_CONFIG_H -I. -I/tmp/spazzatura/include/include/ -g -O2 -MT Fileinfo.o -MD -MP -MF .deps/Fileinfo.Tpo -c -o Fileinfo.o Fileinfo.cc
mv -f .deps/Fileinfo.Tpo .deps/Fileinfo.Po
g++ -DHAVE_CONFIG_H -I. -I/tmp/spazzatura/include/include/ -g -O2 -MT Rdutil.o -MD -MP -MF .deps/Rdutil.Tpo -c -o Rdutil.o Rdutil.cc
mv -f .deps/Rdutil.Tpo .deps/Rdutil.Po
g++ -g -O2 -L/tmp/spazzatura/include/lib/ -o rdfind rdfind.o Checksum.o Dirlist.o Fileinfo.o Rdutil.o -lstdc++ -lnettle
make[1]: Leaving directory `/tmp/spazzatura/include/rdfind-1.3.4'
ok, l'ultimo g++ linka dinamicamente, alla fine è bastato un semplice
Codice:
g++ -g -O2 -o rdfind rdfind.o Checksum.o Dirlist.o Fileinfo.o Rdutil.o /tmp/spazzatura/lib/libnettle.a -lstdc++
Non esiste un bel --linka-staticamente-tutto-quello-che-puoi?
grazie