无法使用 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
参数的位置。
我正在用 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
.
问题已通过使用解决:
gnatmake ada_file.adb -o -largs c_file.o -lpthread
如果您使用 -c
开关,则您没有链接您的代码。您只是将其编译成目标文件。在此阶段指定库没有意义。您的 -l
参数会被简单地忽略 - 当存在 -c
时,它没有任何作用,也没有任何意义。
这些库应该在 链接 时提供,即在您将目标文件合并到最终可执行文件时(没有 -c
,当然)。您没有向我们展示该命令行。该链接线正是您必须添加 -lpthread
参数的位置。