cgo报错/usr/bin/ld: cannot find -lpthread的解决方法

倖福魔咒の 提交于 2020-01-17 01:12:48

cgo编译报错:

/usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/ld: cannot find -lpthread

需要修改其中针对库的声明如下:

package main

/*
#cgo CFLAGS: -I .
#cgo CFLAGS: -I /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.241-2.6.20.0.el7_7.x86_64/include
#cgo CFLAGS: -I /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.241-2.6.20.0.el7_7.x86_64/linux/include
#cgo LDFLAGS: -L/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.241-2.6.20.0.el7_7.x86_64/jre/lib/amd64/server  -Wl,-Bdynamic  -ljvm
#cgo LDFLAGS: -L/lib64  -Wl,-Bdynamic -lc -lpthread
#cgo LDFLAGS: -L/var/lib -ljni
#include <jni.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "jni.h"
*/
import "C"

增加如下内容:

#cgo LDFLAGS: -L/lib64  -Wl,-Bdynamic -lc -lpthread

通过 -Wl,-Bdynamic声明,使用libpthread和libc的动态库

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!