Compilation problem

Discuss new features and functions

Anonymous

I try to compile FreeFileSYnc 5 on fedora 17 x64, make and make install output
no errors but once I launch FreeFileSync I got :


FreeFileSync: error while loading shared libraries: libboost_thread.so.1.49.0: cannot open shared object file: No such file or directory


What is wrong ?
Thanks in advance !
User avatar
Site Admin
Posts: 7210
Joined: 9 Dec 2007

Zenju

It cannot find the dynamic boost libraries which should be located in
/usr/local/lib (or /usr/lib)
. Did you manually install boost according to "compile.txt"?

Anonymous

It's a little odd because the library is actually located there :


sudo find /usr | grep libboost_thread.so
/usr/local/lib/libboost_thread.so.1.49.0
/usr/local/lib/libboost_thread.so


But I will desintall boost and reinstall manually.
User avatar
Site Admin
Posts: 7210
Joined: 9 Dec 2007

Zenju

Very strange, the file is in fact existing and at the right location. Maybe a
"sudo ldconfig /usr/local/lib" helps?

Anonymous

Now, when I call make I am stuck with :


dir_name.cpp:(.text+0x385): undefined reference to `boost::thread::~thread()'
OBJ/FFS_Release_GCC_Make/ui/main_dlg.o: In function `boost::unique_future<bool> zen::async2<bool, (anonymous namespace)::dirExistsUpdating(zen::Zbase<char, zen::StorageRefCountThreadSafe, AllocatorFreeStoreChecked> const&, bool, ProcessCallback&)::{lambda()#1}>((anonymous namespace)::dirExistsUpdating(zen::Zbase<char, zen::StorageRefCountThreadSafe, AllocatorFreeStoreChecked> const&, bool, ProcessCallback&)::{lambda()#1})':
main_dlg.cpp:(.text+0x129d1): undefined reference to `boost::thread::~thread()'
OBJ/FFS_Release_GCC_Make/ui/main_dlg.o:main_dlg.cpp:(.text+0x13611): more undefined references to `boost::thread::~thread()' follow
OBJ/FFS_Release_GCC_Make/lib/parallel_scan.o: In function `zen::fillBuffer(std::set<zen::DirectoryKey, std::less<zen::DirectoryKey>, std::allocator<zen::DirectoryKey> > const&, std::map<zen::DirectoryKey, zen::DirectoryValue, std::less<zen::DirectoryKey>, std::allocator<std::pair<zen::DirectoryKey const, zen::DirectoryValue> > >&, zen::FillBufferCallback&, unsigned long)':
parallel_scan.cpp:(.text+0x373d): undefined reference to `boost::thread::timed_join(boost::posix_time::ptime const&)'
collect2: error: ld returned 1 exit status

Anonymous

I'll yum boost and retry with "sudo ldconfig /usr/local/lib"

Anonymous

Oh well I think I messed up... So to start clean, I uninstalled boost and
boost-thread from my package manager, then I followed the compile.txt, after


./bootstrap.sh --prefix=/usr/local/ --with-libraries=thread


I got :


Unicode/ICU support for Boost.Regex?... not found.


Is it bad ?
I assumed it isn't so I ran ffs make again (after sudo ./bjam --clean install
and sudo ./bjam install) and got :


application.cpp:(.text+0x1093): undefined reference to `boost::thread::~thread()'
OBJ/FFS_Release_GCC_Make/comparison.o: In function `boost::unique_future<bool> zen::async2<bool, (anonymous namespace)::dirExistsUpdating(zen::Zbase<char, zen::StorageRefCountThreadSafe, AllocatorFreeStoreChecked> const&, bool, ProcessCallback&)::{lambda()#1}>((anonymous namespace)::dirExistsUpdating(zen::Zbase<char, zen::StorageRefCountThreadSafe, AllocatorFreeStoreChecked> const&, bool, ProcessCallback&)::{lambda()#1})':
comparison.cpp:(.text+0x80e1): undefined reference to `boost::thread::~thread()'
OBJ/FFS_Release_GCC_Make/synchronization.o: In function `boost::unique_future<bool> zen::async2<bool, (anonymous namespace)::dirExistsUpdating(zen::Zbase<char, zen::StorageRefCountThreadSafe, AllocatorFreeStoreChecked> const&, bool, ProcessCallback&)::{lambda()#1}>((anonymous namespace)::dirExistsUpdating(zen::Zbase<char, zen::StorageRefCountThreadSafe, AllocatorFreeStoreChecked> const&, bool, ProcessCallback&)::{lambda()#1})':
synchronization.cpp:(.text+0x5563): undefined reference to `boost::thread::~thread()'
OBJ/FFS_Release_GCC_Make/ui/dir_name.o: In function `boost::unique_future<bool> zen::async2<bool, (anonymous namespace)::setDirectoryNameImpl(wxString const&, wxDirPickerCtrl*, wxWindow&, wxStaticText*, unsigned long)::{lambda()#1}>((anonymous namespace)::setDirectoryNameImpl(wxString const&, wxDirPickerCtrl*, wxWindow&, wxStaticText*, unsigned long)::{lambda()#1})':
dir_name.cpp:(.text+0x385): undefined reference to `boost::thread::~thread()'
OBJ/FFS_Release_GCC_Make/ui/main_dlg.o: In function `boost::unique_future<bool> zen::async2<bool, (anonymous namespace)::dirExistsUpdating(zen::Zbase<char, zen::StorageRefCountThreadSafe, AllocatorFreeStoreChecked> const&, bool, ProcessCallback&)::{lambda()#1}>((anonymous namespace)::dirExistsUpdating(zen::Zbase<char, zen::StorageRefCountThreadSafe, AllocatorFreeStoreChecked> const&, bool, ProcessCallback&)::{lambda()#1})':
main_dlg.cpp:(.text+0x129d1): undefined reference to `boost::thread::~thread()'
OBJ/FFS_Release_GCC_Make/ui/main_dlg.o:main_dlg.cpp:(.text+0x13611): more undefined references to `boost::thread::~thread()' follow
OBJ/FFS_Release_GCC_Make/lib/parallel_scan.o: In function `zen::fillBuffer(std::set<zen::DirectoryKey, std::less<zen::DirectoryKey>, std::allocator<zen::DirectoryKey> > const&, std::map<zen::DirectoryKey, zen::DirectoryValue, std::less<zen::DirectoryKey>, std::allocator<std::pair<zen::DirectoryKey const, zen::DirectoryValue> > >&, zen::FillBufferCallback&, unsigned long)':
parallel_scan.cpp:(.text+0x373d): undefined reference to `boost::thread::timed_join(boost::posix_time::ptime const&)'
collect2: error: ld returned 1 exit status
make: *** [FreeFileSync] Error 1



If it's a problem with boost, what other boost libs should I uninstall to
start clean ? Some kde apps seems to depend on them.
User avatar
Site Admin
Posts: 7210
Joined: 9 Dec 2007

Zenju

> undefined reference


You should do a "make clean", then try again.
User avatar
Site Admin
Posts: 7210
Joined: 9 Dec 2007

Zenju

> Unicode/ICU support for Boost.Regex?... not found.


Is this a warning, error or info message? Generally, this should not be a
problem, since we need boost::thread only; unless boost::thread internally
depends on regex.

Anonymous

The message is an info message, so it mustn't be the problem.
I followed your instruction, I did make clean and this time ffs compiles fine,
but then again I got :


FreeFileSync: error while loading shared libraries: libboost_thread.so.1.51.0: cannot open shared object file: No such file or directory


Same as before but with version 1.51, probably because my lib boost is more
recent this time. To be sure I ran :


sudo find /usr | grep libboost_thread.so
/usr/local/lib/libboost_thread.so.1.49.0
/usr/local/lib/libboost_thread.so.1.51.0
/usr/local/lib/libboost_thread.so


I removed the boost thread installed by package manager, I don't understand
why the .so is still there. Anyway, why ffs can't open the .so although it's
in the right place ?

Thanks.

Anonymous

Finally I did your other suggestion :


"sudo ldconfig /usr/local/lib"


It is working now ! Thanks a lot.
User avatar
Site Admin
Posts: 7210
Joined: 9 Dec 2007

Zenju

Some things on Linux an only be learned the "hard" way ;)