【问题标题】:undefined reference with boost when I try to compile当我尝试编译时使用 boost 的未定义引用
【发布时间】:2023-03-15 10:04:01
【问题描述】:

当我尝试使用 boost 编译我的服务器时,我遇到了很多错误。 这是我的makefile:

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)

“谷歌搜索”后,我发现有必要输入-lboost_filesystem,但它不再工作,并且出现下一个错误:

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

有人知道它为什么不工作吗?

【问题讨论】:

    标签: c++ boost makefile boost-asio


    【解决方案1】:

    boost::filesystem 依赖于 boost::system,因此您还必须添加 -lboost_system

    【讨论】:

    • 我想到了两件事。首先,在您的INCL 变量中,您有目录Serveur,但在您的LIB 变量中,您有Server。那么,其中一个拼写错误吗?其次,如果这不起作用,您可以转到您的 lib 目录并找到libboost_filename 的实际名称并发布它。
    • 当然:libboost_date_time-vc100-mt-1_47.lib libboost_system-vc100-mt-1_47.lib libboost_date_time-vc100-mt-gd-1_47.lib libboost_system-vc100-mt-gd-1_47。 lib libboost_regex-vc100-mt-1_47.lib libboost_thread-vc100-mt-1_47.lib libboost_regex-vc100-mt-gd-1_47.lib libboost_thread-vc100-mt-gd-1_47.lib libboost_serialization-vc100-mt-1_47.lib libboost_wserialization-vc100-mt-1_47.lib libboost_serialization-vc100-mt-gd-1_47.lib libboost_wserialization-vc100-mt-gd-1_47.lib
    • 我只需要 boost::asio 所以当我在 Visual 2010 上编译它时它可以工作,但在 fedora 上不行
    • 我输入了-lboost_system-mt -lboost_filesystem-mt,我的错误比以前少了,但我总是有一些这样的
    • 尝试以下操作。 make clean,将 -lboost_system-mt 更改为 -lboost_system-vc100-mt-1_47filesystem 也是如此。然后再次运行。
    【解决方案2】:

    我正在使用 cygwin,这个问题的解决方案是链接库

    libboost_filesystem-mt
    libboost_system-mt
    

    链接器的调用如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 2022-07-02
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 2019-09-05
      • 1970-01-01
      相关资源
      最近更新 更多