我在Ubuntu 14.04上运行并使用gcc / g ++进行编译和链接。主要由大约30个文件和20个插件组成。我使用-pthread
作为编译器选项,我做#include <pthread.h>
。我的问题是:
答案 0 :(得分:1)
问题有点模糊,30个文件的“主要”看起来像“exe”,即可执行程序和插件是共享的lib或dll。也好像你想让你的项目多线程。如果它已经是一个多线程程序然后使用gdb附加到它(如果你在linux上)和使用“信息线程”,它将列出线程或“cat / proc / [pid] / status | grep线程”,它将显示线程数..其中pid是运行程序的进程ID。
如果-pthread用作编译器选项但是如果它没有链接到pthread lib,那么你构建/ make程序中的某个地方应该是-lpthread;那么你的程序不是多线程的,即使你包含头文件,因为没有使用线程API。
答案 1 :(得分:1)
我会在这里说明,当你说“插件”时,你实际上是指“外部函数”,即在给定的C源文件中使用但未定义的函数。
当您从代码中调用任何外部函数时,至少需要声明该函数,以便编译器知道调用它的正确方法。头文件通常包含那些需要的声明。
例如,如果要使用strcpy
函数,则需要#include <string.h>
,因为该文件包含strcpy
的声明。如果在给定的C文件中没有调用strcpy
(string.h
中也没有声明任何其他函数),那么您不需要在该文件中#include <string.h>
。
与pthread.h
类似,如果您在该C源文件中调用pthread_create
或该文件中声明的任何其他函数,则只需要包含它。
说到链接,如果链接在一起创建可执行文件的任何源文件使用任何pthread函数,那么在创建可执行文件时需要传递-pthread
。