第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Bazel go_binary c-共享鏈接模式:標(biāo)頭在哪里?

Bazel go_binary c-共享鏈接模式:標(biāo)頭在哪里?

Go
回首憶惘然 2023-08-07 18:50:38
我正在嘗試使用 Bazel (v1.0.0)rules_go 來(lái)構(gòu)建標(biāo)頭+庫(kù),就像使用 go build 一樣-buildmode=c-archive。我在 BUILD.bzl 文件中設(shè)置了以下規(guī)則:go_binary(   name="go_cpp_bridge",   srcs = ["cpp_bridge.go"],   cgo = True,   gc_linkopts=["-buildmode=c-shared"],   linkmode = "c-archive",   visibility = ["//visibility:public"], )目前的代碼cpp_bridge.go只是一個(gè)hello world,看看是否有效:package mainimport "C"//export Addfunc Add(a, b int) int { return a + b }func main(){}Bazel 確實(shí)生成了一個(gè)庫(kù)文件,但我在 bazel-bin 輸出中缺少關(guān)聯(lián)的頭文件。使用 go build 進(jìn)行測(cè)試會(huì)生成頭文件和庫(kù)。我怎樣才能讓巴澤爾給我同樣的東西。
查看完整描述

1 回答

?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊

當(dāng)linkmode = "c-shared"和linkmode = "c-archive"被定義時(shí),還有一些額外的目標(biāo)是通過(guò)在名稱末尾添加后綴來(lái)定義的go_binary。例如,您可以構(gòu)建go_cpp_bridge.c_hdrs來(lái)獲取頭文件。您可以構(gòu)建go_cpp_bridge.cc可cc_library與其他 C/C++ 目標(biāo)鏈接的目標(biāo)。標(biāo)頭以規(guī)則命名go_binary(so go_cpp_bridge.h)。


為了擴(kuò)展您的示例,這里有一個(gè)工作構(gòu)建文件:


load("@io_bazel_rules_go//go:def.bzl", "go_binary")


go_binary(

? ? name = "go_cpp_bridge",

? ? srcs = ["cpp_bridge.go"],

? ? cgo = True,

? ? linkmode = "c-archive",

)


cc_binary(

? ? name = "main",

? ? srcs = ["main.c"],

? ? deps = [":go_cpp_bridge.cc"],

)

還有一個(gè)與 Go 鏈接的 C 程序:


#include <stdio.h>

#include "go_cpp_bridge.h"


int main() {

? printf("%lld\n", Add(21, 21));

? return 0;

}

這沒有記錄,因?yàn)樗皇且粋€(gè)很好的界面。自實(shí)現(xiàn)以來(lái),Bazel 添加了更好的方法來(lái)編寫 C/C++ 兼容規(guī)則,但 Rules_go 尚不支持。#2176是跟蹤問(wèn)題。



查看完整回答
反對(duì) 回復(fù) 2023-08-07
  • 1 回答
  • 0 關(guān)注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)