d2r2 / go-dht

Golang library to interact with DHT11/DHT22/DHT12 temperature and humidity sensors from Raspberry PI.
MIT License
133 stars 52 forks source link

cross compilations techniques compile error #20

Closed volker-raschek closed 5 years ago

volker-raschek commented 5 years ago

I try to read out the data of my DHT11 sensor using the example. My Golang code looks like this:

package main

import (
    "fmt"
    "log"
    "os"

    "github.com/d2r2/go-dht"
)

func main() {
    temperature, humidity, err := dht.ReadDHTxx(dht.DHT11, 4, true)
    if err != nil {
        log.Fatal(err)
        os.Exit(1)
    }
    // Print temperature and humidity
    fmt.Printf("Temperature = %v*C, Humidity = %v%%\n", temperature, humidity)
}

I downloaded the lib via go get -u github.com/d2r2/go-dht.

Thereby compile the binary on my Arch Linux system. Therefore I give the ARM, OS and ARCH variables so that the binary is executable on the Pi. When compelling I get the following error:

markus@markus-pc:~/go/src/dht11-example$ GOARM=7 GOOS=linux GOARCH=arm go build
./main.go:17:32: undefined: dht.ReadDHTxx
./main.go:17:46: undefined: dht.DHT11

Does anyone have any idea what I'm doing wrong?

d2r2 commented 5 years ago

Hi @volker-raschek! Sorry, for delayed response.

You should remember, that since DHT library partially written in C (and your native system has no ARM7 architecture), and you employ "cross compilation techniques", so you should have on your system special cross c-compiler installed. The name of c-compiler for Debian/Ubuntu system will be arm-linux-gnueabi-gcc, for Arch Linux arm-linux-gnueabihf-gcc.

So, once you have this c-compiler, you must modify your compilation call accordingly:

Note: you should select ARM version 6 or 7. Regular Raspberry PI ordinary has 6.

I have one on my Arch Linux notebook where i'm doing all the development (and cross compilation works good), and as I remember arch ecosystem has this compiler only in AUR repository, so you should install it from here: https://aur.archlinux.org/packages/arm-linux-gnueabihf-gcc/

I think the hardest part here is installing a с-compiler, so try and let me know if you still need help.