gpt4 book ai didi

c++ - 静态链接 g++ 时出错

转载 作者:太空狗 更新时间:2023-10-29 11:46:04 24 4
gpt4 key购买 nike

我有一个问题,我想用 mysql 连接器的静态链接编译我的应用程序。

我的命令行:

g++ -o newserver stdafx.cpp ... -lboost_system -lboost_thread -lpthread -lmysqlcppconn -static /usr/lib/libmysqlcppconn-static.a -std=c++0x

但是我有错误:

/usr/bin/ld: cannot find -lmysqlcppconn
/tmp/ccxpOfdZ.o: In function `IsEqualsDns(unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
Server.cpp:(.text+0x356e): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
collect2: ld returned 1 exit status

我该如何解决这个问题?谢谢!

最佳答案

libsqlcppconn.alibsqucppconn.so 在哪里(静态或动态)?编译器正在寻找它,并且没有找到它。

据推测,这是同一个库/usr/lib/mysqlcppconn-static.a。如果是这样,只需删除-lmysqlcppconn。或者只使用 -lmysqlcppconn-static(没有空格),忘记 /usr/lib/libmysqlconn-static.a。这样的名字,应该没有对应的.so,这意味着 g++ 将静态链接它,即使没有-静态。如果两者都存在,则只需要 -static一个 libmysqlconn-static.so 和一个 libmysqlconn-static.a 在同一目录。

关于第二个错误(这只是一个警告,但是如果您尝试运行链接程序将会导致问题其他机器,甚至在你的机器升级之后):如果你在命令行中的任何地方使用 -static (就像你currently do),那么它适用于之后链接的所有文件。包括您不想链接的系统库静态地。我的猜测是 -static 不是必需的(请参阅多于);如果是,请将其放在您的图书馆之前想静态链接,马上放一个-dynamic之后(以便任何后续库,包括系统库,将被动态链接)。

关于c++ - 静态链接 g++ 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14340583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com