Я использую Netbeans в качестве IDE и пытаюсь создать фрагмент кода, который использует библиотеку Boost, но я получаю ошибку ниже
g ++ -c -g -MMD -MP -MF «build / Debug / GNU-Linux-x86 / tcpproxy_server.o.d» -o build / Debug / GNU-Linux-x86 / tcpproxy_server.o tcpproxy_server.cpp
mkdir -p dist / Debug / GNU-Linux-x86
g ++ -o dist / Debug / GNU-Linux-x86 / tcp_proxy build / Debug / GNU-Linux-x86 / tcpproxy_server.o
build / Debug / GNU-Linux-x86 / tcpproxy_server.o: в функции__static_initialization_and_destruction_0(int, int)':
повышение :: системы :: generic_category ()»
/usr/include/boost/system/error_code.hpp:221: undefined reference to
/usr/include/boost/system/error_code.hpp:222: неопределенная ссылка наboost::system::generic_category()'
повышение :: системы :: system_category ()»
/usr/include/boost/system/error_code.hpp:223: undefined reference to
build / Debug / GNU-Linux-x86 / tcpproxy_server.o: в функцииboost::system::error_code::error_code()':
повышение :: системы :: system_category ()»
/usr/include/boost/system/error_code.hpp:322: undefined reference to
build / Debug / GNU-Linux-x86 / tcpproxy_server.o: в функцииboost::asio::error::get_system_category()':
повышение :: системы :: system_category ()»
/usr/include/boost/asio/error.hpp:230: undefined reference to
build / Debug / GNU-Linux-x86 / tcpproxy_server.o: в функцииboost::thread_exception::thread_exception(int, char const*)':
повышение :: системы :: system_category ()»
/usr/include/boost/thread/exceptions.hpp:51: undefined reference to
collect2: error: ld вернул 1 состояние выхода
Поэтому я провел онлайн-поиск ошибок и обнаружил, что мне нужно добавить «-lboost_system» в мою команду компиляции.
Я добавил его в «project-> properties-> build-> c ++ compiler-> Additional Options», но ошибка все та же.
g ++ -lboost_system -o dist / Debug / GNU-Linux-x86 / tcp_proxy build / Debug / GNU-Linux-x86 / tcpproxy_server.o
build / Debug / GNU-Linux-x86 / tcpproxy_server.o: в функции__static_initialization_and_destruction_0(int, int)':
повышение :: системы :: generic_category ()»
/usr/include/boost/system/error_code.hpp:221: undefined reference to
/usr/include/boost/system/error_code.hpp:222: неопределенная ссылка наboost::system::generic_category()'
повышение :: системы :: system_category ()»
/usr/include/boost/system/error_code.hpp:223: undefined reference to
build / Debug / GNU-Linux-x86 / tcpproxy_server.o: в функцииboost::system::error_code::error_code()':
повышение :: системы :: system_category ()»
/usr/include/boost/system/error_code.hpp:322: undefined reference to
build / Debug / GNU-Linux-x86 / tcpproxy_server.o: в функцииboost::asio::error::get_system_category()':
повышение :: системы :: system_category ()»
/usr/include/boost/asio/error.hpp:230: undefined reference to
build / Debug / GNU-Linux-x86 / tcpproxy_server.o: в функцииboost::thread_exception::thread_exception(int, char const*)':
повышение :: системы :: system_category ()»
/usr/include/boost/thread/exceptions.hpp:51: undefined reference to
collect2: error: ld вернул 1 состояние выхода
Я узнал, что мне нужно добавить его в конец строки компиляции, например:
«g ++ tcp_proxy.cpp -o tcpproxy -lboost_system»
Это я попробовал, и это работает, но netbeans добавляет «Опции добавления» в начале
лайк:
g ++ -lboost_system -o dist / Debug / GNU-Linux-x86 / tcp_proxy build / Debug / GNU-Linux-x86 / tcpproxy_server.o
Есть ли способ настроить netbeans, чтобы добавить свою опцию в конец?
Итак, я сделал еще несколько поисков и нашел вопрос с несколько моей проблемой
ссылка на пост:
Это говорит о том, что я могу использовать следующий способ для связи библиотеки:
Свойства проекта> Линкер> Библиотеки> Добавить библиотеку> Выберите файлы .a.
Это несколько решает мою проблему, я добиваюсь успеха с этой попыткой сейчас:
g ++ -c -g -MMD -MP -MF «build / Debug / GNU-Linux-x86 / tcpproxy_server.o.d» -o build / Debug / GNU-Linux-x86 / tcpproxy_server.o tcpproxy_server.cpp
mkdir -p dist / Debug / GNU-Linux-x86g ++ -o dist / Debug / GNU-Linux-x86 / tcp_proxy build / Debug / GNU-Linux-x86 / tcpproxy_server.o -lboost_system
Но я все еще не уверен, является ли это правильным подходом ИЛИ почему его добавление в дополнение к параметрам компилятора не работает
Других решений пока нет …