2011-01-26 292 views
2

在嵌入式文件系统上,我想摆脱libthread_db。我的理解 是只有在使用pthread调试程序时才有必要。然而,这里是我的观察:如何摆脱libthread_db

  • 如果libthread_db所不存在在启动时(当使用PROGRAMM第一并行线程启动),启动这样的程序会导致段错误。

  • 稍后添加libthread_db(即在pthread程序分段后)不会改变任何内容。每个使用pthread的程序都会在启动时发生段错误。

因此,似乎libthread_db是使用pthread运行任何类型的程序的基本要素。

+0

使用`ldd`,我无法找到一个线程的程序,对libthread_db所链接。你在用什么C库? – 2011-01-27 07:04:10

回答

5

libthread_db从来没有使用的线程化程序。它是只有由调试器使用。

您断言libthread_db以某种方式需要使用pthreads运行程序是不正确的。如果您的pthread程序在从系统中删除libthread_db时崩溃,则其他在您的嵌入式目标上被破坏;去除libthread_db只是触发其他东西。

您可以简单地确认一下:在普通的Linux系统上构建一个pthread程序。在strace下运行该程序,并观察libthread_db未出现在strace输出中。现在将/lib/libthread_db.so.1重命名为其他内容,并观察测试程序继续正常工作。

+0

+1,他还有其他事情可能正在编译线程库。 – 2011-01-27 07:05:07