浙江金顶建设公司网站,万网创始人张向东,wordpress协同插件,uniapp微信小程序模板使用std::thread的应用程序#xff0c;编译时如果是动态链接pthread线程库运行正常#xff0c;-static静态链接时在某些平台下可能会遇到一些意外错误。如常见编译命令#xff1a;g -stdC11 test.c -o test -pthread
1、Segmentation fault#xff08;段错误#xff09; …使用std::thread的应用程序编译时如果是动态链接pthread线程库运行正常-static静态链接时在某些平台下可能会遇到一些意外错误。如常见编译命令g -stdC11 test.c -o test -pthread
1、Segmentation fault段错误
2、terminate called after throwing an instance of std::system_error......
第一点检查编译选项是否链接线程库检查链接选项是 “-pthread” 还是 “-lpthread”
第二点在编译选项上添加如下选项
-Wl,--whole-archive -lpthread -Wl,--no-whole-archive
作用强制链接引用的静态库中所有符号编译不报错的原因是默认编译选项只链接到静态库中第一次出现的该引用对象而该对象可能是“weak symbol”因此导致问题发生。采用 whole-archive 可以把每一个引用对象包含进来不会使用前面提到的不完整实现“weak symbol”。
完整编译选项示例
g -stdC11 -Wl,--whole-archive -pthread -Wl,--no-whole-archive test.c -o test