【发布时间】:2016-08-09 20:17:35
【问题描述】:
我正在用 C 语言编写程序。我收到错误消息:
file_name.c:(.text+0x5d): undefined reference to `pthread_create'
当 gcc 将我的 file_name.o 与我的主 ADA 文件链接时,会出现此特定错误。
对于C文件的实际编译,我都试过了:
gcc -c -pthread file_name.c
还有:
gcc -c file_name.c -lpthread
这些似乎都不起作用。有什么想法吗?
更新:
我没有意识到的一件事是,当结合 C 和 ADA 时,使用 gnatmake 时会包含 C 库。
问题解决了:
gnatmake ada_file.adb -o -largs c_file.o -lpthread
【问题讨论】:
-
向我们展示您如何链接代码。
-
gcc -c进行编译但没有链接。您使用什么命令链接,实际错误发生在哪里? -
链接由
gnatmake完成。实际的链接部分是使用 gnatmake 标志-largs完成的,后跟file_name.o -
更新问题以显示实际的链接行。您需要向其中添加一些内容以使链接器扫描 pthread 库。看来问题出在
gnatmake设施中——它没有链接您需要链接的内容。暗示 GCC 有过错似乎是在误导。 -
这并没有更新问题:它正在添加另一条评论。请编辑问题以包含相关信息。
gnatmake是 Gnat 链接器进程吗?如果是这样,您可能需要在c_file_name.o参数之后添加-lpthread。或者您可能需要在gnatmake上进行 RTFM。 Gnat 是否允许您将 Ada 线程与 POSIX 线程混合使用?