小编Fra*_*ang的帖子

cgo交叉编译错误stdlib.h not found

背景

我将使用 go-sqlite3 交叉编译 golang 应用程序,这将我推入“cgo 交叉编译坑”。为了将其交叉编译为aarch64,我使用的命令如下,但出现错误:

[root@ec5dc2a3bd37 data_collector]# make crosscompiletry
CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ AR=aarch64-linux-gnu-ar CGO_LDFLAGS="--sysroot=/usr/include:/usr/lib/gcc/aarch64-linux-gnu/4.8.5/include -static" /usr/local/go/bin/go build -o ./output/crosscompile/dcagent ./cmd/agent/main.go
# runtime/cgo
_cgo_export.c:3:20: fatal error: stdlib.h: No such file or directory
 #include <stdlib.h>
                    ^
compilation terminated.
make: *** [crosscompiletry] Error 2
Run Code Online (Sandbox Code Playgroud)

问题

我该如何修复这个错误?

这是否意味着 gccgo 找不到 aarch64 的包含文件?

我有那些包含和开发工具,包含是由设置的--sysroot,我做对了吗?

在等待帮助的同时我会挖掘以下线索:

  1. 我发现这一步我没有做,这与我的问题有关吗?
  2. 网上搜了也没找到解决办法,最类似的情况就是这个博客,但是如何在centos中安装musl-dev呢?
  3. 找到了一个存储库xcgo,稍后会尝试。

依恋

包含文件

[root@ec5dc2a3bd37 data_collector]# find /usr -regex '.*aarch64.*std.*'
/usr/lib/gcc/aarch64-linux-gnu/4.8.5/include/stdnoreturn.h
/usr/lib/gcc/aarch64-linux-gnu/4.8.5/include/stdarg.h
/usr/lib/gcc/aarch64-linux-gnu/4.8.5/include/stdbool.h
/usr/lib/gcc/aarch64-linux-gnu/4.8.5/include/stdint.h
/usr/lib/gcc/aarch64-linux-gnu/4.8.5/include/stdalign.h
/usr/lib/gcc/aarch64-linux-gnu/4.8.5/include/stddef.h
/usr/lib/gcc/aarch64-linux-gnu/4.8.5/include/stdint-gcc.h …
Run Code Online (Sandbox Code Playgroud)

cross-compiling go

4
推荐指数
1
解决办法
6653
查看次数

类定义中静态 const 成员 map&lt;&gt; 的初始化

我将在我的类中有一个 const std::map,并且我希望它是静态的,以便在其他实例中重用这个数据结构。不幸的是,它不会编译,我在 cpp 入门中发现的是:

但是,我们可以为具有 const 整型类型的静态成员提供类内初始值设定项,并且必须为文字类型的 constexprs 的静态成员提供此类初始化器(入门 5)。

我的代码看起来像:

clase worker {
//.....
private :
//.....
static map<string, string> const map_{...};
}
Run Code Online (Sandbox Code Playgroud)

那么,假设我们有几十个worker并且map_很大,有没有一种OOP技术来重用这个数据结构?

c++ oop c++11

1
推荐指数
1
解决办法
4022
查看次数

导航/ usr/include/files时使用Vim查找定义

我发现当你想在linux下做一些事情时,在头文件之间导航是偶然的.例如,当我想找到某个东西的定义时struct sockaddr_storage.我现在正在做的是:!find /usr/include/ -type f | xargs grep " struct sockaddr ".它很强大,但对我来说并不令人信服.

是否有更简单的方法来浏览.h文件,如其他IDE,例如VStudio,提供?(几乎是C/CPP用户)ctags和cscope或tagbar是供项目使用的,在这种情况下它们能让我受益吗?

c vim header-files

0
推荐指数
1
解决办法
283
查看次数

标签 统计

c ×1

c++ ×1

c++11 ×1

cross-compiling ×1

go ×1

header-files ×1

oop ×1

vim ×1