我正在尝试在C上编译一个简单的齿轮工人。我使用mac。这是代码:
#include <libgearman/gearman.h>
int main(void) {
gearman_worker_st worker;
gearman_worker_create(&worker);
gearman_worker_add_server(&worker, "localhost", 4730);
return 0;
}
当我尝试用以下代码编译它时:
#gcc test.c Undefined symbols for architecture x86_64: "_gearman_worker_add_server", referenced from: _main in ccLUuf8y.o "_gearman_worker_create", referenced from: _main in ccLUuf8y.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status
我知道我必须将gcc与gearman联系起来但是在尝试时:
#gcc test.c -lgearman ld: library not found for -lgearman collect2: ld returned 1 exit status
有什么想法吗?
答案 0 :(得分:3)
也许你需要定义lib路径,比如
-L/usr/lib/
,使用您的libgearman.a存储路径替换-L/usr/lib/
答案 1 :(得分:3)
也许您需要定义“包含路径”和“lib路径”, 例如, / usr / local中的头文件“libgearman / gearman.h”, / usr / local / libgearman / lib
中的库libgearman.so编译命令就像, gcc -I / usr / local -L / usr / local / libgearman / lib test.c -lgearman
答案 2 :(得分:0)
如上所述here,您必须将其与-lgearman
相关联gcc test.c -lgearman