【发布时间】:2012-12-09 16:50:41
【问题描述】:
我正在尝试为 Linux 创建一个共享库,这样:
- 其他程序可以使用它的函数和对象
- 代码对最终用户不可见
我所做的是用 Eclipse 创建一个共享库。这个库使用 pthreads。 我生成了 .so 和 .lib。 .lib 位于 LIBRARY/Lib 中,而 .so 位于 LIBRARY/Release 中。
然后我创建了另一个应该使用该库的项目,并给出了 .lib 文件的路径和 .h 文件的路径,该路径仅包含库的所有必要 .h 文件。 一切似乎都正常,但是当我运行程序时它崩溃了。调试时,我收到以下消息:
在“pthread_mutex_lock.c”中找不到源文件
找到文件或编辑源查找路径以包含其位置。
怎么了?有人可以帮帮我吗?
编辑:我什么也没做,现在我有一个不同的错误,在前几行之前:
在“random.c”中找不到源文件
找到文件或编辑源查找路径以包含其位置。
【问题讨论】:
-
安装 libpthread 开发和调试包(通常是“glibc-debug”或类似的一部分)。
-
我已经安装了所有的库。这些项目作为“独立程序”在 Netbeans 下运行良好。然后我决定将它移到 Eclipse 下并将其转换为库,这就是我遇到的问题
-
pthread_mutex_lock.c是来自 pthreads 库的文件。您可能正在调用该文件中的一个函数,很可能是pthread_mutex_lock()。您可以尝试安装 glibc sources 包,但首先尝试向上堆栈,看看您是否可以检查自己的代码。也许你会在那里看到一个错误。pthread_mutex_lock()中导致崩溃的错误不太可能出现。 -
我已经安装了所有必要的库,并且该项目在 Netbeans 下独立运行。我可能在 Eclipse 的项目设置中出错了,但我不明白是什么。
-
确保初始化 pthread 互斥锁,并且确保不要在构造函数中使用互斥锁。
标签: linux eclipse shared-libraries