2016-09-21 12 views
3

私のearlier questionに続いて、このエラーは、articleからすべて同じ手順を実行しようとすると、Go 1.6.1からGo 1.7にアップグレードされています。 1(いくつかの共有ライブラリをコンパイルしようとするとリンカがクラッシュするため、Go 1.6.1に戻ることはできません)。私が何をしたかは暗黙的に共有ライブラリにランタイム/ cgoを含めることができません

:インストール

  1. (これは後でGOROOTと呼ばれている)~/.go/goに行きます。
  2. libstd.soをコンパイル:

    GOROOT=~/.go/go GOPATH=~/tests go install -buildmode=shared -linkshared std 
    
  3. コンパイルcalcライブラリー:このエラーを受け取った

    GOROOT=~/.go/go GOPATH=~/tests go build -a -x -linkshared -o app cashier 
    

    と::

    GOROOT=~/.go/go GOPATH=~/tests go install -a -x -buildmode=shared -linkshared calc 
    
  4. appをコンパイルしようとしました

    ~/.go/go/pkg/tool/linux_amd64/link: cannot implicitly include runtime/cgo in a shared library 
    

私は環境の前に付加CGO_ENABLED=0とステップを繰り返すことを試みたが、何もこの方法を構築しないでしょう。このエラーが表示されます:

これは既知のバグですか?共有ライブラリをサポートすることを意味していますか?

答えて

1

作業DLLを作成する唯一の方法は、buildmode = c-archiveを使用して、エクスポートするすべてのgo関数に対してCスタブを書き込むことです。しかし、私はこれでWindows上で作業していましたが、Linuxでこれを混乱させる必要はありませんでした。それは調査する道です。

関連する問題