Undefined link with boost when trying to compile

I have a lot of errors when I try to compile my server with boost. Here is my make file:

NAME = serveur SRCS = Serveur/main.cpp \ Serveur/Client.cpp \ Serveur/Commande.cpp \ Serveur/My_exception.cpp \ Serveur/Network.cpp \ Serveur/Server.cpp ##################################################### OBJS = $(SRCS:.cpp=.o) CC = g++ RM = rm -f CFLAGS = -g -W -Wall -Werror INCL = ./Serveur/boost_1_47_0 LIB = ./Serveur/boost_1_47_0/stage/lib/ NLIB = -lboost_system -lboost_system-mt -lboost_filesystem -lboost_filesystem-mt ##################################################### $(NAME) : $(OBJS) @$(CC) $(OBJS) -I$(INCL) -L$(LIB) $(NLIB) -o $(NAME) @printf "\n \033[33m[Message]\033[39m Compilation under Linux done\n\n" .cpp.o : @$(CC) $(CFLAGS) -I$(INCL) -L$(LIB) $(NLIB) -c $< -o $@ @printf " \033[34m[Compilation]\033[39m %s\n" $< re : fclean all all : $(NAME) clean : @$(RM) *~ $(OBJS) @printf " \033[31m[Delete] \033[39m%s\n" $(OBJS) fclean : clean @$(RM) $(NAME) @printf "\n \033[31m[Delete] \033[39m%s\n\n" $(NAME) 

After "googling" I found that I need to put -lboost_filesystem , but it does not work again and the following errors appear:

 Serveur/main.o: In function `__static_initialization_and_destruction_0': /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()' /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()' /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()' Serveur/main.o: In function `error_code': /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:315: undefined reference to `boost::system::system_category()' Serveur/main.o: In function `boost::asio::error::get_system_category()': /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/asio/error.hpp:216: undefined reference to `boost::system::system_category()' Serveur/Client.o: In function `__static_initialization_and_destruction_0': /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()' /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()' /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()' Serveur/Network.o: In function `__static_initialization_and_destruction_0': /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()' /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()' /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()' Serveur/Server.o: In function `__static_initialization_and_destruction_0': /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()' /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()' /home/abad_a//rendulocal/tech3/cpp/babel-2014-abad_a/Serveur/./Serveur/boost_1_47_0/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()' collect2: ld returned 1 exit status make: *** [serveur] Error 1 

Does anyone know why it is not working?

+4
source share
2 answers

boost::filesystem depends on boost::system , so you also need to add -lboost_system .

+6
source

I am using cygwin and a solution to this problem is linking the libraries

 libboost_filesystem-mt libboost_system-mt 

The linker call looks like this:

 g++ -o "bin.exe" ./src/reader.o ./src/bin.o -llibboost_filesystem-mt -llibboost_system-mt 
+2
source

Source: https://habr.com/ru/post/1382038/


All Articles