2017-06-07 66 views
9

Plik wykonywalny korzystający z biblioteki lmdb jest w 64-bitowym formacie Linux.Jak zmusić 64-bitowy LMDB do wygenerowania 32-bitowej bazy danych?

Ponieważ biblioteki zależności pliku wykonywalnego są w 64-bitowym pliku .Buildowanie pliku wykonywalnego & LMDB lib jako rozwiązanie 32-bitowe nie jest możliwe.

Czy istnieje sposób, w jaki mogę zmusić bibliotekę lib o wartości 64-bitowej do wygenerowania 32-bitowej bazy danych lmdb.

Potrzebuję tego 32-bitowego pliku bazy danych, ponieważ wygenerowany db zostanie wyeksportowany do urządzenia 32-bitowego.

Uwaga: db wygenerowany na maszynie 64-bitowej nie będzie działać na komputerze 32-bitowym.

+0

Czy można ponownie skompilować plik wykonywalny? – Jouster500

Odpowiedz

5

Domyślam się, że użycie 64-bitowej bazy danych na 32-bitowym pliku LMDB jest trudne do zakończenia ze względu na fakt, że lmdb jest oparty na mapowaniu pamięci.

Konieczny jest zatem konwerter wymagający zrozumienia podstawowego formatu danych. Ten link The LMDB file format wydaje się być dobrym początkiem.

Tańszą alternatywą wydaje się zrzucenie pliku na 64-bitowej platformie (mdb_dump) i ponowne załadowanie go na 32-bitowej platformie (mdb_load). Mimo to powoduje to ograniczenia wskazane na stronie połączonego podręcznika: Dumping i ponowne ładowanie baz danych, które korzystają z funkcji porównawczych zdefiniowanych przez użytkownika spowoduje utworzenie nowych baz danych, które używają domyślnych funkcji porównawczych. W tym przypadku jest całkiem prawdopodobne, że przeładowana baza danych ulegnie uszkodzeniu bez możliwości naprawy, co uniemożliwi zapisanie ani odzyskanie danych.

Jednak podczas przeszukiwania Internetu, gdzieś przeczytałem, że można go użyć do przeniesienia 32-bitowego DB do 64-bitowego. Mogę tylko podejrzewać, że powinien działać również w odwrotny sposób (jak nigdy nie widziałem tego formatu). Ponieważ zrzut jest formatem tekstowym, powinno być możliwe – może być z pośrednim krokiem przetwarzania tekstu.

Inną, raczej tanią alternatywą dla IMHO, byłoby uruchomienie 32-bitowego lmdb na platformie 64-bitowej. Jak wiem, jest to typowe i zwykłe w Windowsie, nie byłem (całkowicie) pewien dla Linuksa i znalazłem to: SE: How to run 32-bit app in Ubuntu 64-bit?. Niestety, pytający stwierdził, że nie jest to możliwe w tym konkretnym przypadku.