Compression de dossier format tar.gz sous C++
Bonjour,
je suis à la recherche d'un code / librairie qui me permettrais de compresser un dossier en format tar.gz sous linux en C++.
J'ai essayer déjà Boost mais je me suis confronté à un problème que je n'ai pas résolut (voir code ci dessous)
La lib: zlib ne permet pas la compression de dossier mais uniquement de fichier unique.
Et quand a la lib: libtar, je n'ai quasiment trouvé aucun exemple fiable.
Merci à vous si vous avez une idée..
PS: mon code avec la lib: boost
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#include <cstddef>
#include <string>
#include "Zipclass.h"
#include "zlib.h"
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <boost/iostreams/filter/gzip.hpp>
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/device/array.hpp>
#include <boost/iostreams/device/back_inserter.hpp>
#include <boost/iostreams/filter/test.hpp>
#include <boost/ref.hpp>
#include <boost/range/iterator_range.hpp>
#include <boost/test/test_tools.hpp>
#include <boost/test/unit_test.hpp>
#define TEMP_DIRECTORIE "/opt/appl/var/"
#define compressionLevel 0
using namespace std;
using namespace boost;
//using namespace boost::iostreams;
Zipclass::Zipclass(std::string input_directory, std::string output_file)
{
std::vector<char> temp, dest;
std::string fileName = std::string(TEMP_DIRECTORIE) + std::string("tempfile.gz");
std::ofstream file;
file.open(fileName.c_str(), std::ios_base::out | std::ios_base::binary);
//filtering_stream<output> out;
boost::iostreams::gzip_params params;
params.file_name = fileName;
params.level = boost::iostreams::zlib::best_compression;
boost::iostreams::gzip_compressor out(params);
} |
Résultat:
./../src/Zipclass.cpp:52: undefined reference to `boost::iostreams::zlib::default_compression'
./../src/Zipclass.cpp:52: undefined reference to `boost::iostreams::zlib::deflated'
./../src/Zipclass.cpp:52: undefined reference to `boost::iostreams::zlib::default_strategy'
./../src/Zipclass.cpp:52: undefined reference to `boost::iostreams::zlib::best_compression'
ps je travail sous eclipse C++, avec ubuntu
Thx