我有一個依賴 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 回答
- 0 關注
- 419 瀏覽
添加回答
舉報
0/150
提交
取消