我想为我的Raspberry编译一个程序,它使用thrd_sleep()函数,就像在c11标准库中的头文件中定义的那样。为了实现跨平台兼容性,我想使用C11库。
我以前做过的一个谷歌搜索让我相信更新gcc应该更新可用的头,因为它没有提到任何其他命令。由于各种原因,我没有更改包源。我已经安装了最新版本的gcc: gcc-4,6,16-4.7,and -4.8。我试过所有的命令:
gcc main.c
gcc-4.6 main.c
gcc-4.7 main.c
gcc-4.8 main.c每次我都会犯同样的错误:
main.c:2:21: fatal error: threads.h: No such file or directory现在很明显,我需要安装其他的东西。我的其他搜索没有得出任何结论。
发布于 2016-02-16 09:46:35
C11线程尚未由GCC,看看这个实现。不幸的是,C11线程仍然是“新的”,所以现在几乎没有任何编译器支持它们。将它们用于跨平台开发并不是一个好主意(目前)。
POSIX线程是目前唯一的可移植线程库。
发布于 2016-02-13 05:38:55
对于我在Raspberry上做的一个C++项目,我使用的是p线程。这是我的命令:
g++ -o video7 -lpthread -lrt video7.cpp stackstring.cpp playvideo.cpp dirlist.cpp cpuinfo.cpp faststring.cpp liststring.cpp remoteupdate.cpp kbhit.cpp randomnumber.cpp blowfish.cpp base85.cpp我包括了
#include <pthread.h>我创建了这样一个线程。
pthread_t updateThread;
char *param = strdup("Sample");
pthread_create(&updateThread,NULL, UpdateThreadProc, param);
void *UpdateThreadProc(void *parameters)
{
// Do work.
pthread_exit(NULL);
}发布于 2016-02-13 07:50:35
线程函数通常不是编译器发行版的一部分,而是C库的一部分,因此您必须找到一个实现C11线程接口的函数。在我只知道实现此接口的http://www.musl-libc.org/的开源库之外。有一些Linux发行版使用这个C库作为它们的主库,例如阿尔卑斯。在其他发行版上,您可能会找到一个可以应用的包,或者您可以自己编译musl。
https://stackoverflow.com/questions/35376452
复制相似问题