Повышение C ++ в Linux через удаленную разработку Netbeans: неопределенная ссылка на boost :: filesystem :: path :: codecvt ()

0

Поэтому я установил Netbeans на windows7 и настроил ящик Ubuntu с samba, чтобы разделить каталог разработки, в котором у меня есть источники и библиотека ускорения. Я скомпилировал библиотеку boost, чтобы иметь возможность ссылаться на boost_filesystem, но я все еще получаю эту ошибку, когда пытаюсь скомпилировать приложение:

Copying project files to /home/nms/.netbeans/remote/ophelia.tele2.net/t2003915-Windows-x86_64/ at [email protected]
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory '/home/nms/.netbeans/remote/ophelia.tele2.net/t2003915-Windows-x86_64/Z/mr_deamon'
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/mr_deamon
make[2]: Entering directory '/home/nms/.netbeans/remote/ophelia.tele2.net/t2003915-     Windows-x86_64/Z/mr_deamon'
mkdir -p build/Debug/GNU-Linux-x86
rm -f "build/Debug/GNU-Linux-x86/mr_deamon.o.d"
g++    -c -g -I/opt/mail-relay/mr_deamon/boost_1_55_0 -I/opt/mail-relay/mr_deamon/mysql_connector_cpp/include -MMD -MP -MF "build/Debug/GNU-Linux-x86/mr_deamon.o.d" -o build/Debug/GNU-Linux-x86/mr_deamon.o mr_deamon.cpp
mkdir -p dist/Debug/GNU-Linux-x86
g++     -o dist/Debug/GNU-Linux-x86/mr_deamon build/Debug/GNU-Linux-x86/mr_deamon.o -L/opt/mail-relay/mr_deamon/mysql_connector_cpp/lib -L/opt/mail-relay/mr_deamon/boost_1_55_0/bin.v2/libs -lmysqlcppconn-static -lmysqlclient -lboost_system -lboost_filesystem
build/Debug/GNU-Linux-x86/mr_deamon.o: In function 'boost::filesystem::file_size(boost::filesystem::path const&)':
/opt/mail-relay/mr_deamon/boost_1_55_0/boost/filesystem/operations.hpp:447: undefined reference to 'boost::filesystem::detail::file_size(boost::filesystem::path const&,   boost::system::error_code*)'
build/Debug/GNU-Linux-x86/mr_deamon.o: In function 'path<char*>':
/opt/mail-relay/mr_deamon/boost_1_55_0/boost/filesystem/path.hpp:139: undefined reference to 'boost::filesystem::path::codecvt()'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/mr_deamon] Error 1
make[2]: Leaving directory '/home/nms/.netbeans/remote/ophelia.tele2.net/t2003915-Windows-x86_64/Z/mr_deamon'
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory '/home/nms/.netbeans/remote/ophelia.tele2.net/t2003915-Windows-x86_64/Z/mr_deamon'
make: *** [.build-impl] Error 2


BUILD FAILED (exit value 2, total time: 2s)

Я думал, что правильно понял ссылку. Вот код программы:

#include <iostream>
#include <boost/filesystem.hpp>
//using namespace std;
using namespace boost::filesystem;
int main(int argc, char**argv)
{
    std::cout << file_size(argv[0]);

    return EXIT_SUCCESS;
}

Часть sql отлично работает с привязкой и всеми, но только для того, чтобы получить файловую систему boost, достаточно, чтобы получить ошибку сборки, не может получить, как использовать удаленное развертывание с netbeans в Windows для Linux. Что я делаю не так?

Новая попытка без netbeans, только на Ubuntu с примером из ссылки на файловую систему Boost... и с командой компиляции: g++ -pthread mr.cpp -lboost_filesystem-mt -lboost_system-mt вывод -/tmp/ccIZaqeX.o: В функции boost::filesystem::file_size(boost::filesystem::path const&)': mr.cpp: (.text._ZN5boost10filesystem9file_sizeERKNS0_4pathE[boost::filesystem::file_size(boost::filesystem::path const&)]+0x19): undefined reference to boost :: filesystem :: detail :: file_size (boost :: filesystem :: path const &, boost :: system :: error_code *) '/tmp/ccIZaqeX.o: В функции boost::filesystem::path::path<char*>(char* const&, boost::enable_if<boost::filesystem::path_traits::is_pathable<boost::decay<char*>::type>, void>::type*)': mr.cpp: (.text._ZN5boost10filesystem4pathC2IPcEERKT_PNS_9enable_ifINS0_11path_traits11is_pathableINS_5decayIS4_E4typeEEEvE4typeE[_ZN5boost10filesystem4pathC5IPcEERKT_PNS_9enable_ifINS0_11path_traits11is_pathableINS_5decayIS4_E4typeEEEvE4typeE]+0x22): undefined reference to импульс :: filesystem :: path :: codecvt() 'collect2: ld возвращено 1 статус выхода

Я не понимаю.

  • 0
    Я только что добавил -lboost_system, которая исключает другое сообщение об ошибке, но все же boost_filesystem жалуется.
Теги:
netbeans
boost
remote-server

2 ответа

1
Лучший ответ

У меня такая же проблема вчера:

Как я решил:

Во-первых: если вы установили Boost по источнику, убедитесь, что вы его компилируете в соответствующий набор инструментов компилятора, который вы используете в netbeans. Например, я тестировал его с помощью MinGW @Windows 8 Boost/MingW.

Второе: в Netbeans (я использовал версию 7.4) я добавил библиотеки, которые я хочу вручную:

Свойства проекта> Компонент> Библиотеки> Добавить библиотеку> Выберите файлы.a.

РЕДАКТИРОВАТЬ:

Эта ссылка может быть полезна: неопределенная ссылка с boost, когда я пытаюсь скомпилировать

  • 0
    Я использую g ++ как для Linux, так и для netbeans toolhost. Полученная скомпилированная библиотека Boost находится в boost_1_55_0 / bin.v2 / .... и этот каталог используется совместно с samba, я взял эти библиотеки .a в netbeans, как вы сказали, вы можете увидеть их в журнале сборки, который я разместил. Тем не менее я получаю ту же ошибку.
  • 0
    Вы добавили файл boost_system? Я видел только '-lmysqlcppconn-static -lmysqlclient -lboost_filesystem'
Показать ещё 6 комментариев
1

Отлично, так что в итоге это сработало, вот что я сделал: 1- Установил gcc 4.8 (не уверен, что это актуально). 2- загруженный и распакованный boost в /usr/local 3- запустил bootstrap.sh 4- изменить параметр набора инструментов в project-config.jam на использование gcc: 4.8.1: g++ - 4.8; 5- запущен. /b2 - работает система 6-./b2 --with-filesystem, оба этапа 5 и 6 выполняются с помощью root пользователя. 7- скомпилировать исходный файл следующим образом:

# g++-4.8 mr.cpp -L /usr/local/boost_1_55_0/stage/lib -I /usr/local/boost_1_55_0 -lboost_system -lboost_filesystem -o mr

Джи, наконец, я был в нескольких минутах от выхода из Boost.

То, что я думаю, имело значение, - это согласованность компилятора (набора инструментов) и пути установки, и особенно эти два "-L/usr/local/boost_1_55_0/stage/lib -I/usr/local/boost_1_55_0"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню