Поэтому я установил 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 статус выхода
Я не понимаю.
У меня такая же проблема вчера:
Как я решил:
Во-первых: если вы установили Boost по источнику, убедитесь, что вы его компилируете в соответствующий набор инструментов компилятора, который вы используете в netbeans. Например, я тестировал его с помощью MinGW @Windows 8 Boost/MingW.
Второе: в Netbeans (я использовал версию 7.4) я добавил библиотеки, которые я хочу вручную:
Свойства проекта> Компонент> Библиотеки> Добавить библиотеку> Выберите файлы.a.
РЕДАКТИРОВАТЬ:
Эта ссылка может быть полезна: неопределенная ссылка с boost, когда я пытаюсь скомпилировать
Отлично, так что в итоге это сработало, вот что я сделал: 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"