Хорошо, - так что нашел кое-что. Сначала с точки зрения путей поиска см .: http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html. Это помогает уточнить пути поиска при ссылке.
Во-вторых, обратите внимание, что идея использования -mt в конце названия взята из более старого соглашения о повышении, которое больше не требуется.
См .: http://groups.google.com/group/linux.debian.bugs.dist/browse_thread/thread/5177d8bf13791038?pli=1
И последнее, но не менее важное: если вы такой же пользователь Cygwin, как я, есть несколько ошибок, о которых вам следует знать. Когда вы устанавливаете инструменты devel, возможно, вы установили версию надбавок до 46_1 (которую я использую). Они будут в / usr / include / boost /, и если вы используете эти заголовки после сборки boost в вашей системе, ваши библиотеки не будут совпадать с найденными вами заголовками, и вы всегда получите неопределенную ссылку на boost::system::get_system_category() because these headers may expect you to reference the
-mt libs. If you didn't build boost on your box this will work fine if you just include a
-mt` в конце рассматриваемой библиотеки (это было для меня в другой коробке, что было ошеломляющим, пока я не понял это).
Для меня ответом было сделать резервную копию (на всякий случай), а затем стереть заголовки в /usr/include/boost/
, а затем принудительно включить заголовки повышения моего исходного кода ala -I
и принудительно связать полные пути с моими библиотеками. , Это заставляет g ++ использовать libs + соответствующие заголовки.
$ g++ dcc_to_png.c dccinfo.c -I"$CODEDIR/boost_1_46_1/" -include dccinfo.h /usr/lib/filesystem/build/gcc-4.3.4/release/link-static/threading-multi/libboost_filesystem.a /usr/lib/system/build/gcc-4.3.4/release/link-static/threading-multi/libboost_system.a -o dcc_to_png.exe
Это работает - но это будет работать, только если g ++ не находит эти старые заголовки. Если вы не создали Boost и хотите, чтобы это работало - я думаю, что вы можете опустить -I
и просто использовать -lboost_filesystem-mt -lboost_system-mt
, но это АБСОЛЮТНО зависит от ВЕРСИИ форсирования. (см. ветку выше).