- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试使用 go 创建一个跨平台的 native 库并找到 this gomobile教程。但是,当我尝试初始化它时(即使我在下面的示例中没有提供 Android NDK 路径)它似乎失败了,因为它找不到 stdlib.h
。
我尝试围绕 cgo 进行一些调查,但没有任何结果,希望更熟悉生态系统的人能为我指明正确的方向。
$ gomobile init
gomobile: go install -gcflags=-shared -ldflags=-shared -pkgdir=/Users/myusername/go/pkg/gomobile/pkg_android_arm std failed: exit status 2
# runtime/cgo
_cgo_export.c:2:10: fatal error: 'stdlib.h' file not found
我的环境...(我在 OS X El Capitan 上,全新安装了 go1.9 darwin/amd64)
$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/myusername/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/rx/l7pzlrld2mqczrfb36t536hh0000gp/T/go-build735124167=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
编辑:(添加失败初始化的详细输出)
$ gomobile init -v# Installing golang.org/x/mobile/gl.# Installing golang.org/x/mobile/app.# Installing golang.org/x/mobile/exp/app/debug.# Installing std for android/arm.runtime/internal/sysruntime/internal/atomicruntimesync/atomicunicodeinternal/raceerrorsunicode/utf8mathmath/bitscontainer/listcontainer/ringcrypto/subtlecrypto/internal/cipherhwinternal/nettraceruntime/cgovendor/golang_org/x/crypto/poly1305syncencodingunicode/utf16image/colorinternal/cpuinternal/syscall/windowsinternal/syscall/windows/registryimage/color/paletteinternal/syscall/windows/sysdlliosyscallinternal/singleflightruntime/race# runtime/cgo_cgo_export.c:2:10: fatal error: 'stdlib.h' file not foundvendor/golang_org/x/text/securevendor/golang_org/x/text/unicodebytesstringshashcrypto/cipherruntime/tracehash/crc32hash/adler32crypto/hmachash/crc64hash/fnvvendor/golang_org/x/text/transformtext/tabwriterbufiopathhtmlstrconvmath/randmath/cmplxtimeinternal/syscall/unixreflectcrypto/aescryptocrypto/rc4encoding/base64encoding/base32encoding/ascii85crypto/sha512crypto/md5crypto/sha1crypto/sha256imageinternal/pollimage/internal/imageutilimage/drawimage/jpegosos/signalfmtsortencoding/binarypath/filepathcompress/bzip2encoding/pemcontainer/heapregexp/syntaxruntime/debugcrypto/desvendor/golang_org/x/crypto/chacha20poly1305/internal/chacha20vendor/golang_org/x/crypto/curve25519vendor/golang_org/x/crypto/chacha20poly1305io/ioutilcompress/flatecontextarchive/tarmath/bigcompress/lzwencoding/hexdebug/dwarfdebug/gosymdebug/plan9objdatabase/sql/driverencoding/csvencoding/gobencoding/jsondatabase/sqlencoding/xmlarchive/zipcompress/gzipcompress/zlibdebug/machodebug/elfdebug/pelogvendor/golang_org/x/net/http2/hpackvendor/golang_org/x/text/unicode/bidivendor/golang_org/x/text/unicode/normnet/urlmimemime/quotedprintablenet/http/internalflagcrypto/dsacrypto/ellipticencoding/asn1crypto/randgo/tokengo/scannercrypto/rsavendor/golang_org/x/text/secure/bidiruleregexptext/template/parsego/astgo/constantos/exectext/scannercrypto/ecdsacrypto/x509/pkiximage/gifimage/pngvendor/golang_org/x/net/idnaindex/suffixarraytestinginternal/traceruntime/pproftext/templatenet/internal/socktestos/userruntime/pprof/internal/profiletesting/iotesttesting/quickgo/parsergo/printertesting/internal/testdepsinternal/testenvgo/dochtml/templatego/typesgo/formatgo/buildgo/internal/gccgoimportergo/internal/gcimportergo/internal/srcimportergo/importergomobile: go install -gcflags=-shared -ldflags=-shared -pkgdir=/Users/myusername/go/pkg/gomobile/pkg_android_arm -v std failed: exit status 2
最佳答案
即使使用 issue21802,问题仍然在 go1.10 darwin/amd64
上重现已打补丁。
如果 go install -gcflags=-shared -ldflags=-shared -pkgdir=/Users/myusername/go/pkg/gomobile/pkg_android_arm std
可以自己运行它成功问题是运行时 ENV 问题,有解决方法。
解决这个问题的技巧:
1.手动运行 go install -gcflags=-shared -ldflags=-shared -pkgdir=/Users/myusername/go/pkg/gomobile/pkg_android_arm std
。 确保安装成功。
2.然后在init.go
中静默installStd
。
go/src/golang.org/x/mobile/cmd/gomobile/init.go (around Line 165-175)
// Install standard libraries for cross compilers.
start := time.Now()
//if ndkRoot != "" {
// Ideally this would be -buildmode=c-shared.
// https://golang.org/issue/13234.
// androidArgs := []string{"-gcflags=-shared", "-ldflags=-shared"}
// for _, arch := range archs {
// env := androidEnv[arch]
// if err := installStd(env, androidArgs...); err != nil {
// return err
// }
// }
//}
3.再次安装解决方法gomobile:go install golang.org/x/mobile/cmd/gomobile
4.再次运行gomobile init
。
关于gomobile init 找不到 stdlib.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46103509/
我在 Agda 中处理字符串,并且我有它们的向量。我需要检查给定字符串是否出现在向量中(作为检查变量是否自由或绑定(bind)在表达式中的一部分,在我正在做的 PL 理论 wprk 中)。 我仍在寻找
我正在编译大量使用 srand() 和 rand() 的文件,但不包括 stdlib.h。我知道这是不好的做法,但是由于我无法更改正在编译的文件,因此无法在每个文件中插入必要的 include 语句。
我想在我的 Rails 应用程序中使用 Date::ABBR_MONTHS 常量。我在 http://www.ruby-doc.org/stdlib/ 看到了 Ruby stdlib 文档似乎没有这个
昨天我更新了 Android Studio 版本和 Kotlin 插件版本。 Android Studio 版本:3.1.2 Kotlin 版本:1.2.41 当我使用此配置创建 Android 项目
我是使用 CGAL 库的初学者,在组合 CGAL 后,我尝试在 fedora 上运行一个组合映射示例 qt-creator: #include #include #include #includ
Android Studio 2.3.3; Kotlin 插件:1.1.4; Kotlin 编译器:Kotlin 到 JVM:1.6。 Android Studio > 新建项目 > 在项目操作中配置
我有使用 opengl 和 CGAL 的 c++ qt 项目,但我有以下错误: /usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No
我知道的一件事可能不是真的,那就是 T应该是可复制构造的,即T应该有一个可访问的复制构造函数。 但是,是否还有其他要求,例如copy assignable? 作为补充,我记得 Effective ST
此代码片段主要来自 qsort 的手册页。 int cmp(const void *p1, const void *p2) { char s1 = *(*(char * const *)p1);
在现代 C++ 中,标准库是否提供类型列表模板? int main() { using int_types = type_list; std::cout ::value ::type)
我一直在想,C++ 中的设计决策是否有任何理由不为任何标准库容器提供纯抽象类? 我很欣赏 hash_map 后来来自 stdext 命名空间,但共享一个非常相似的接口(interface)。如果我后来
这个问题在这里已经有了答案: What is the use of _start() in C? (4 个答案) 关闭 6 年前。 采用以下 C 程序: int main(){} 它没有使用 C 标
关注此blog post我试图编译 stdlib.so 以将其他代码与其链接。不幸的是,stdlib.so 本身是一个动态链接的二进制文件: # ldd /usr/local/go/pkg/linux
作为一个 puppet 新手,我有一个问题,包括 stdlib 插件 我想使用 stdlib 的 file_line,因此我尝试包含 stdlib 并调用它 class service_mon {
我正在尝试在我创建的类中使用 stdlib 堆栈,但我在动态创建它时遇到问题。 这是我的头文件“matcher.h”中的相关代码: private: stack opens;
我已经更新了我的一个非常旧的项目(XCODE 4.5.1 baseSDK iOS6)并且由于某种原因我得到了上面的错误。 它只为 iOS5+ 编译但不适用于 iOS 4.3 ? 有什么想法吗? 最佳答
我有一个使用标准库 fopen/fclose 函数实现的文件 IO 接口(interface),它运行良好,直到我们不得不将其更改为同步实现以防止数据丢失(一种情况)。所以我用系统调用(open()/
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: How does system() exactly work in linux? 出于好奇,我想知道 sys
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 7 年前。 Improve
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我是一名优秀的程序员,十分优秀!