Trying to statically link Boost

早过忘川 提交于 2019-12-02 23:13:04

For pthread_mutex_init, you want to compile/link with -pthread option:

g++ -static -pthread -o"MyProgram"  ./main.o   -lboost_thread

The problem is that functions like pthread_mutex_init are in a separate library. Dynamic libraries can include the metadata for the fact that it needs the separate library (so libboost_thread.so includes the fact that it needs libpthread).

But static libraries don't have that information. So you need to provide the reference to any necessary libraries when you link statically.

As for using -pthread instead of -lpthread, it's slightly preferable because it not only links the necessary library, but provides any other options that should be used (such a -D_REENTRANT to the compiler).

Try adding -lpthread to your invocation.

On Linux a dynamic library may automatically depend on other dynamic libraries so that when you link it, you get the other libraries for free. When linking statically, there is no such system and you have to specify the other libraries manually.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!