去运行错误“未定义对`dlopen'的引用”

I am trying to integrate Golang script with existing C shared library. The C shared library in turn loads other shared libraries at run time.

While I am trying to run go run gotest.go

it throws error

./libtest.so: undefined reference to `dlopen'
./libtest.so: undefined reference to `dlclose'
./libtest.so: undefined reference to `dlerror'
./libtest.so: undefined reference to `dlsym'
collect2: error: ld returned 1 exit status

I have created separate C executable to load this libtest.so at run time and that is working properly.

Any idea what should be done to fix the issue?

I have tried following commands

sudo go build -compiler=gccgo -gccgoflags="-ltest" gotest.go

also tried the command

sudo go build -compiler=gccgo -gccgoflags="-ltest -ldl" gotest.go

Also tried the command

go run gotest.go

===============================================

Here is the code I am using

testapi.h
typedef Students{
        char name[40];
        int  id;
} Student;

Student* getStudent();

test.c
#include <stdlib.h>
#include <stdio.h>
#include "mylib.h"
#include "testapi.h"

int rc = 0;
Student *s = 0;
Student* getStudent(){

   rc = loadmylib(); //This function loads another shared library
   if (!rc)
   {
       rc = initlib(); //This calls dlsym to get the necessary function from opened shared library
       if (!rc)
       {
           s= (student *)malloc(sizeof(Student));

           //use the function pointer received from dlsym to populate the Student struct 's'
       }
    }
    return s;
}

I have following entries in my gotest.go file

package main

/*
#cgo CFLAGS: -I.
#cgo LDFLAGS: -L. -ltest -ldl
#include "testapi.h"
*/
import "C"
import (
    "fmt"
)

type Student struct{
     name string
     id int
}

func main() {
    st := C.getStudent()
    fmt.Println("Name: ", string(st.name))
}

I have copied testapi.h, gotest.go, mylib.h, libmylib.so, libtest.so in the same directory. Then run the command

go run gotest.go

It has thrown the error " error: undefined reference to 'getStudent' "

What am I doing wrong here? Am I supposed to run command

sudo go build -compiler=gccgo -gccgoflags="-ltest" gotest.go