亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang alpine docker 交叉編譯 C++

golang alpine docker 交叉編譯 C++

Go
精慕HU 2022-06-21 17:03:07
我有一個依賴 C 進行調用和編譯的 golang 項目?,F在,我使用make all命令在golang:alpine的docker鏡像中構建,發現如下錯誤:/usr/lib/gcc/x86_64-alpine-linux-musl/9.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: /go/pkg/mod/git.ipyker.com/combase/[email protected]/src/py/cgo/3party/protobuf/libprotobuf.a(structurally_valid.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE在golang項目中引入了C,我在LDFLAGS中設置了-fPIE參數。package l5/*#cgo CFLAGS: -I./include#cgo LDFLAGS: -fPIE -L./lib -Wl,-Bstatic -lqos_client -Wl,-Bdynamic -lstdc++#include "qos_client_c.h"#include <stdlib.h>#include <stdint.h>*/import "C"Makefile的內容如下:VERSION = "2.1"COMMIT = $(shell git rev-parse --short HEAD)XCFS_AS = ./bin/xcfs_asXCFS_FS = ./bin/xcfs_fsXCFS_FA = ./bin/xcfs_handlefailall : $(XCFS_AS) $(XCFS_FS) $(XCFS_FA)$(XCFS_AS) : $(shell find ./pkg/ ./cmd/xcfs_as/ -name "*.go")        go build -o $@ -ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT)" ./cmd/xcfs_as/$(XCFS_FS) : $(shell find ./pkg/ ./cmd/xcfs_fs/ -name "*.go")        go build -o $@ -ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT)" ./cmd/xcfs_fs/$(XCFS_FA) : $(shell find ./pkg/ ./cmd/xcfs_handlefail/ -name "*.go")        go vet ./cmd/xcfs_handlefail/        go build -o $@ -ldflags "-X main.version=$(VERSION) -X main.commit=$(COMMIT)" ./cmd/xcfs_handlefail/test :vet :        go vet ./cmd/xcfs_as/        go vet ./cmd/xcfs_fs/        go vet ./cmd/xcfs_handlefail/
查看完整描述

1 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

編譯共享庫被 -no-pie 破壞了,在這種情況下它應該是一個 noop。

go env -w CC="gcc -no-pie"


查看完整回答
反對 回復 2022-06-21
  • 1 回答
  • 0 關注
  • 419 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號