By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
458,122 Members | 1,549 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 458,122 IT Pros & Developers. It's quick & easy.

Compiling c++ programs with Boost-library on Ubuntu

P: n/a
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.../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::filesys tem::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._ZN5boost10filesystem18direct ory_iteratorC1ERKNS0_4pathE[boost::filesystem::directory_iterator::directory_i terator(boost::filesystem::path
const&)]+0x2b): undefined reference to
`boost::filesystem::detail::dir_itr_init(boost::sh ared_ptr<boost::filesystem::detail::dir_itr_imp>&,
boost::filesystem::path const&)'
/tmp/ccDxvNVJ.o: In function
`boost::filesystem::directory_iterator::dereferenc e() const':
simple_ls.cpp:(.text._ZNK5boost10filesystem18direc tory_iterator11dereferenceEv[boost::filesystem::directory_iterator::dereference ()
const]+0xd): undefined reference to
`boost::filesystem::detail::dir_itr_dereference(bo ost::shared_ptr<boost::filesystem::detail::dir_itr _imp>
const&)'
/tmp/ccDxvNVJ.o: In function
`boost::filesystem::directory_iterator::increment( )':
simple_ls.cpp:(.text._ZN5boost10filesystem18direct ory_iterator9incrementEv[boost::filesystem::directory_iterator::increment()]+0xd):
undefined reference to
`boost::filesystem::detail::dir_itr_increment(boos t::shared_ptr<boost::filesystem::detail::dir_itr_i mp>&)'
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

Nov 29 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
so************@gmail.com wrote:
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
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.
Nov 29 '06 #2

P: n/a

<so************@gmail.comschrieb im Newsbeitrag
news:11**********************@j44g2000cwa.googlegr oups.com...
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.
Nov 29 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.