无法将混合的C和Ada程序与pthread库链接

时间:2016-08-09 20:17:35

标签: c linux gcc ada gnat

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

1 个答案:

答案 0 :(得分:4)

如果您使用-c切换,则表示您没有链接代码。您只是将其编译为目标文件。在这个阶段指定库是没有意义的。您的-l参数会被忽略 - 当-c出现时,它没有任何效果,也没有任何意义。

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