c6bb759e2c
CGO (the Go language C bindings) normally links dynamically with the C libraries. It seems that passing -extldflags=-static is not sufficient to make sure they link statically. As a result, a build using CGO will fail with runtime.gcdata: missing Go type information for global symbol .dynsym: size 72 There are two modules in the standard Go library that can use CGO: os/user and net. Both of these have pure Go versions, however, which can be selected with the osusergo and netgo tags. Since these two are standard library modules that get used in almost all Go programs, pass those flags in the common infrastructure. It's not entirely clear if this is always the case or only depending on the specific way CGO is used. In the former case, we could instead disable CGO globally if static libs are enabled. However, it turns out that this doesn't solve the problem completely anyway (delve still fails to link, with different errors). Also, it is possible that other cgo modules do still work. Therefore, just stick to adding the osusergo and netgo tags. Cf. Statically compiling Go programs [0] Fixes: - crucible: http://autobuild.buildroot.net/results/c2f/c2f29f55b461899e8e15c0494578304e6f74bf51/ - containerd: http://autobuild.buildroot.net/results/699/69910fc6b9f474a7eb0ca7ffa27ac5512cc1bb37/ - delve: http://autobuild.buildroot.net/results/552/55225d5da17e85271943f7adce6f07d014d9717d/ - probably others... [0] https://www.arp242.net/static-go.html Signed-off-by: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> |
||
---|---|---|
arch | ||
board | ||
boot | ||
configs | ||
docs | ||
fs | ||
linux | ||
package | ||
support | ||
system | ||
toolchain | ||
utils | ||
.checkpackageignore | ||
.clang-format | ||
.defconfig | ||
.flake8 | ||
.gitignore | ||
.gitlab-ci.yml | ||
.shellcheckrc | ||
CHANGES | ||
Config.in | ||
Config.in.legacy | ||
COPYING | ||
DEVELOPERS | ||
Makefile | ||
Makefile.legacy | ||
README |
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. The documentation can be found in docs/manual. You can generate a text document with 'make manual-text' and read output/docs/manual/manual.text. Online documentation can be found at http://buildroot.org/docs.html To build and use the buildroot stuff, do the following: 1) run 'make menuconfig' 2) select the target architecture and the packages you wish to compile 3) run 'make' 4) wait while it compiles 5) find the kernel, bootloader, root filesystem, etc. in output/images You do not need to be root to build or run buildroot. Have fun! Buildroot comes with a basic configuration for a number of boards. Run 'make list-defconfigs' to view the list of provided configurations. Please feed suggestions, bug reports, insults, and bribes back to the buildroot mailing list: buildroot@buildroot.org You can also find us on #buildroot on OFTC IRC. If you would like to contribute patches, please read https://buildroot.org/manual.html#submitting-patches