programacion listado librerias funciones dev descargar clases c++ boost boost-program-options

c++ - listado - librerias en programacion c



No se puede encontrar la biblioteca de C++ al enlazar, error al completar el ejemplo `boost:: program_options` (1)

Estoy tratando de compilar el multiple_sources.cpp para compilar en mi computadora. Estoy ejecutando Xubuntu Lucid Lynx completamente actualizado.

Se compilará sin problema con g++ -c multiple_sources.cpp pero cuando intento enlazar y hacer un exectuable con g++ multiple_sources.o obtengo:

multiple_sources.cpp:(.text+0x3d): undefined reference to `boost::program_options::options_description::m_default_line_length'' multiple_sources.cpp:(.text+0x87): undefined reference to `boost::program_options::options_description::options_description(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)'' multiple_sources.cpp:(.text+0x15a): undefined reference to `boost::program_options::options_description::add_options()'' multiple_sources.cpp:(.text+0x17b): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, char const*)'' multiple_sources.cpp:(.text+0x193): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, char const*)'' multiple_sources.cpp:(.text+0x1af): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)'' multiple_sources.cpp:(.text+0x1eb): undefined reference to `boost::program_options::options_description::m_default_line_length'' multiple_sources.cpp:(.text+0x252): undefined reference to `boost::program_options::options_description::options_description(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)'' ...

etcétera ad nauseum .

Tengo la biblioteca instalada:

>ls -l /usr/lib/libboost_program_options* -rw-r--r-- 1 root root 640800 2010-03-31 21:19 /usr/lib/libboost_program_options.a lrwxrwxrwx 1 root root 26 2010-04-09 00:57 /usr/lib/libboost_program_options-mt.a -> libboost_program_options.a lrwxrwxrwx 1 root root 34 2010-04-09 00:57 /usr/lib/libboost_program_options-mt.so -> libboost_program_options.so.1.40.0 lrwxrwxrwx 1 root root 34 2010-04-09 00:57 /usr/lib/libboost_program_options.so -> libboost_program_options.so.1.40.0 -rw-r--r-- 1 root root 289336 2010-03-31 21:19 /usr/lib/libboost_program_options.so.1.40.0

Después de leer la página del manual de g ++, también he intentado:

  • g++ -llibboost_program_options multiple_sources.cpp
  • g++ -llibboost_program_options.a multiple_sources.cpp
  • g++ -llibboost_program_options.so multiple_sources.cpp
  • y todo lo anterior con -L/usr/lib antes de -l

Todos ellos fallan con una variación en:

/usr/bin/ld: cannot find -llibboost_program_options.so collect2: ld returned 1 exit status

¿Qué estoy haciendo mal?


El parámetro -l está equivocado; deshacerse de la corrección previa de lib y utilizar -lboost_program_options .

El enlazador espera que todas las bibliotecas comiencen con lib , y que usted lo deje fuera al especificar la biblioteca.

También podría incluir la ruta completa a la biblioteca en la lista de archivos, sin -l (por ejemplo, g++ multiple_sources.cpp /usr/lib/libboost_program_options.so ), pero para las bibliotecas del sistema, es mejor seguir la convención; no siempre se instalan en /usr/lib .