Compiling c++ programs with Boost-library on Ubuntu

S

soren.andersen

Hello out there :)

I'm new to c++, coming from Java, and trying to learn the basics of the
language and all that, basically just for fun. :)

So, when once I played around with c++ a bit i found out I didn't
really have any ways of looking at directories.
So, I looked around and found the boost library, which seems pretty
cool. However, I seem to be unable to compile anything using these
libraries.

For instance, the following example program from the boost site:
http://www.boost.org/libs/filesystem/example/simple_ls.cpp
when compiled by me:
g++ simple_ls.cpp -o simple_ls
produces the following error:
(WARNING! Large snippet coming up!)

soren@soren-laptop:~$ g++ simple_ls.cpp -o simple_ls
/tmp/ccDxvNVJ.o: In function `main':
simple_ls.cpp:(.text+0x89): undefined reference to
`boost::filesystem::initial_path()'
simple_ls.cpp:(.text+0xb7): undefined reference to
`boost::filesystem::native(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'
simple_ls.cpp:(.text+0xc6): undefined reference to
`boost::filesystem::path::path(char const*, bool
(*)(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&))'
simple_ls.cpp:(.text+0xd8): undefined reference to
`boost::filesystem::system_complete(boost::filesystem::path const&)'
simple_ls.cpp:(.text+0x17a): undefined reference to
`boost::filesystem::exists(boost::filesystem::path const&)'
simple_ls.cpp:(.text+0x193): undefined reference to
`boost::filesystem::path::native_file_string() const'
simple_ls.cpp:(.text+0x208): undefined reference to
`boost::filesystem::is_directory(boost::filesystem::path const&)'
simple_ls.cpp:(.text+0x222): undefined reference to
`boost::filesystem::path::native_directory_string() const'
simple_ls.cpp:(.text+0x2b5): undefined reference to
`boost::filesystem::is_directory(boost::filesystem::path const&)'
simple_ls.cpp:(.text+0x2d7): undefined reference to
`boost::filesystem::path::leaf() const'
simple_ls.cpp:(.text+0x34a): undefined reference to
`boost::filesystem::path::leaf() const'
simple_ls.cpp:(.text+0x3f1): undefined reference to
`boost::filesystem::path::leaf() const'
simple_ls.cpp:(.text+0x56a): undefined reference to
`boost::filesystem::path::native_file_string() const'
/tmp/ccDxvNVJ.o: In function
`boost::filesystem::directory_iterator::directory_iterator(boost::filesystem::path
const&)':
simple_ls.cpp:(.text._ZN5boost10filesystem18directory_iteratorC1ERKNS0_4pathE[boost::filesystem::directory_iterator::directory_iterator(boost::filesystem::path
const&)]+0x2b): undefined reference to
`boost::filesystem::detail::dir_itr_init(boost::shared_ptr<boost::filesystem::detail::dir_itr_imp>&,
boost::filesystem::path const&)'
/tmp/ccDxvNVJ.o: In function
`boost::filesystem::directory_iterator::dereference() const':
simple_ls.cpp:(.text._ZNK5boost10filesystem18directory_iterator11dereferenceEv[boost::filesystem::directory_iterator::dereference()
const]+0xd): undefined reference to
`boost::filesystem::detail::dir_itr_dereference(boost::shared_ptr<boost::filesystem::detail::dir_itr_imp>
const&)'
/tmp/ccDxvNVJ.o: In function
`boost::filesystem::directory_iterator::increment()':
simple_ls.cpp:(.text._ZN5boost10filesystem18directory_iterator9incrementEv[boost::filesystem::directory_iterator::increment()]+0xd):
undefined reference to
`boost::filesystem::detail::dir_itr_increment(boost::shared_ptr<boost::filesystem::detail::dir_itr_imp>&)'
collect2: ld returned 1 exit status

I asked around a bit, and was told I didn't link the boost-libs
correctly, and to use something like:
g++ simple_ls.cpp -o simple_ls -lboost/filesystem
but that produces:
soren@soren-laptop:~$ g++ simple_ls.cpp -o simple_ls -lboost/filesystem
/usr/bin/ld: cannot find -lboost/filesystem
collect2: ld returned 1 exit status

Basically, not only do I know why this fails - or why I need it :-D -
nor do I know how to about fixing it :)

Are there any nice tutorials out there dealing with this sort of thing
that I've been unable to find?

Thx in advance,

/Søren
 
R

Rolf Magnus

I asked around a bit, and was told I didn't link the boost-libs
correctly, and to use something like:
but that produces:
soren@soren-laptop:~$ g++ simple_ls.cpp -o simple_ls -lboost/filesystem
/usr/bin/ld: cannot find -lboost/filesystem
collect2: ld returned 1 exit status

Basically, not only do I know why this fails

Try -lboost_filesystem
- or why I need it :-D -

Because you need to link against the boost_filesystem library.
nor do I know how to about fixing it :)

have a look into /usr/lib/ and search for somethig with a name that starts
with libboost_filesystem. Remove the '.so' part at the end and the 'lib' at
the start, and you have what needs to follow the -l.
Are there any nice tutorials out there dealing with this sort of thing
that I've been unable to find?

I'd expect the boost documentation itself to contain something about that.
 
O

Oliver Bleckmann

Hello out there :)

I'm new to c++, coming from Java, and trying to learn the basics of the
language and all that, basically just for fun. :)

So, when once I played around with c++ a bit i found out I didn't
really have any ways of looking at directories.
So, I looked around and found the boost library, which seems pretty
cool. However, I seem to be unable to compile anything using these
libraries.

seems to me that u forgot to download and include some files while compiling
i use a ide with project support, don't know nothing about makefiles, so
creating a project and adding files - especially those included in " " - and
perhaps some libs - also look up the dependencies in .hpp - should help.
i have the same problems this antique behavior of c++ is verry confusing to
me.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,967
Messages
2,570,148
Members
46,694
Latest member
LetaCadwal

Latest Threads

Top