Karl, Piotr, thanks a lot for your help. It finally works.
Installing boost_1.43 eliminated all boost related errors.
And the last error I fixed with quick-and-dirty-hack. But I think it needs some attention from developers.
If I understood correctly, the problem is: libtcod provides a list that stores pointers given by user. In some specific case we want to store integers in that list and so we give integers themselves instead of pointers. When we read from list the function returns void* and we cast it back to int. Now in 64 bit pointers and int-s are of different size and conversion from void* to int is not obvious for compiler.
I used (int)(unsigned long)that_pointer as a quick fix, hope it really was unsigned (maybe (int)(long)that_pointer could also work, didn't check).