无法使用 pthread 库将 C 和 Ada 程序混合到 link

Cannot get mixed C and Ada program to link with pthread library

我正在用 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

如果您使用 -c 开关,则您没有链接您的代码。您只是将其编译成目标文件。在此阶段指定库没有意义。您的 -l 参数会被简单地忽略 - 当存在 -c 时,它没有任何作用,也没有任何意义。

这些库应该在 链接 时提供,即在您将目标文件合并到最终可执行文件时(没有 -c,当然)。您没有向我们展示该命令行。该链接线正是您必须添加 -lpthread 参数的位置。