C语言库“rt”是什么?macOS编译OpenCL程序遇-lrt库未找到报错求助
嘿,我来帮你搞定这俩问题~
先搞懂:C语言里的rt库是什么?
-lrt对应的是librt,也就是Linux实时扩展库。它是Linux系统特有的,提供了一批标准C库没有覆盖的POSIX实时编程接口,比如获取高精度时间的clock_gettime()、消息队列相关的mq_open()这类函数。在Ubuntu这类Linux发行版里,这些函数没整合到默认的C库(libc)里,所以编译时必须显式加-lrt来链接这个库。
但划重点:macOS上根本没有这个单独的librt库——苹果把这些实时相关的函数直接整合到了系统标准库libSystem里,所以你加-lrt就会触发链接错误。
解决macOS下的编译报错
很简单,修改你的Makefile,把多余的-lrt删掉就行,修改后的编译命令如下:
cl-demo: cl-demo.c cl-helper.c gcc $(CL_CFLAGS) $(CL_LDFLAGS) -std=gnu99 -o$@ $^ -lOpenCL -v
如果之后还是遇到OpenCL库找不到的问题,可以把-lOpenCL换成macOS特有的框架链接方式:
cl-demo: cl-demo.c cl-helper.c gcc $(CL_CFLAGS) $(CL_LDFLAGS) -std=gnu99 -o$@ $^ -framework OpenCL -v
这样调整后,你的测试程序应该就能正常编译运行啦。
内容的提问来源于stack exchange,提问作者jackxujh
相关产品推荐
相关产品推荐

