g 静态链接 Pthread 时,导致分段错误:解释及解决方法
问题:
当使用 g 和 -pthread 标志来静态(-static)链接 pthread 库时,程序会遇到分段错误。
解释:
弱符号:
动态链接与静态链接:
不完整的链接解析:
解决方案:
到强制链接器在静态链接程序中查看 pthread 库中的所有符号,使用:
g++ -o one one.cpp -Wall -std=c++11 -O3 -static -pthread \ -Wl,--whole-archive -lpthread -Wl,--no-whole-archive
附加说明:
WL_WHOLE_ARCHIVE_HACK="-Wl,--whole-archive" WL_NO_WHOLE_ARCHIVE_HACK="-Wl,--no-whole-archive" AC_SUBST(WL_WHOLE_ARCHIVE_HACK) AC_SUBST(WL_NO_WHOLE_ARCHIVE_HACK) mytarget_LDADD = @WL_WHOLE_ARCHIVE_HACK@ -lpthread @WL_NO_WHOLE_ARCHIVE_HACK@
以上是为什么我的带有静态链接和 Pthread 的 C 程序会导致分段错误?的详细内容。更多信息请关注PHP中文网其他相关文章!