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

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

為什么我交叉編譯的 CGO 二進(jìn)制文件不能在 上運(yùn)行?

為什么我交叉編譯的 CGO 二進(jìn)制文件不能在 上運(yùn)行?

Go
qq_笑_17 2021-09-13 16:09:39
當(dāng)我編譯以下代碼片段時(shí)(playground link):package main/*#cgo LDFLAGS: -lbluetooth#include <bluetooth/bluetooth.h>#include <bluetooth/hci.h>#include <bluetooth/hci_lib.h>*/import "C"func main() {        C.hci_get_route(nil)}...使用這些環(huán)境變量:CC=arm-linux-gnueabihf-gccCGO_ENABLED=1GOARCH=armGOARM=6我得到一個(gè) 1.6Mb 的二進(jìn)制文件:適用于我的 ODROID-C1(ARMv7,運(yùn)行 Arch,來(lái)自 archlinuxarm.org),但是不適用于我的 Raspberry Pi B+(ARMv6,運(yùn)行 Raspbian,來(lái)自 raspberrypi.org)。當(dāng)我在 Pi 上運(yùn)行它時(shí),我得到一個(gè)“ Segmentation fault”。當(dāng)我使用這些環(huán)境變量運(yùn)行它時(shí):LD_PRELOAD=/lib/arm-linux-gnueabihf/libSegFault.soSEGFAULT_USE_ALTSTACK=1刪除/usr/lib/arm-linux-gnueabihf/libcofi_rpi.sofrom/etc/ld.so.preload給了我相同的輸出,除了沒(méi)有包含libcofi_rpi.so.試圖構(gòu)建一個(gè)靜態(tài)鏈接的二進(jìn)制文件-tags netgo -a -ldflags "-linkmode external -extldflags -static"給了我一個(gè)“ Illegal instruction”而不是“ Segmentation fault”。嘗試在 Pi 本身上構(gòu)建二進(jìn)制文件是可行的,但是,我想交叉編譯它。交叉編譯確實(shí)有效,但僅適用于 ODROID-C1/Arch,不適用于 Raspberry Pi/Raspbian。我使用的確切構(gòu)建步驟可以使用 Docker 重現(xiàn):$ docker run -it golang:1.4.1-cross bash在 docker 中,我運(yùn)行:echo "deb http://emdebian.org/tools/debian/ jessie main" >/etc/apt/sources.list.d/crosstools.listcurl -s http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | apt-key add -dpkg --add-architecture armhfapt-get updateapt-get install -y crossbuild-essential-armhf libbluetooth-dev:armhfexport CC=arm-linux-gnueabihf-gccexport CGO_ENABLED=1export GOARCH=armexport GOARM=6go build -o test test.go這給了我一個(gè)名為“test”的可執(zhí)行文件,如上所述,它不會(huì)在 Pi 上運(yùn)行。
查看完整描述

1 回答

?
慕田峪4524236

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

所以讓我回答我自己的問(wèn)題,經(jīng)過(guò)數(shù)周的反復(fù)試驗(yàn),得出的結(jié)論是……

……這根本行不通。

作為最后的手段,我嘗試采用與編譯上述代碼時(shí)使用的 Raspbian 映像完全相同的 Raspbian 映像,并使用QEMU運(yùn)行它。猜猜看:我遇到了段錯(cuò)誤。相同的指令,使用相同的圖像,當(dāng)我在 Pi 上運(yùn)行它時(shí),給我一個(gè)工作可執(zhí)行文件,當(dāng)我模擬 Pi 或嘗試以任何方式交叉編譯它時(shí),給我一個(gè)段錯(cuò)誤。

最后,這不值得麻煩。我們只是設(shè)置了專(zhuān)用的 Pi 來(lái)構(gòu)建我們的項(xiàng)目,而“生產(chǎn)”P(pán)i 只是拉取更新后的二進(jìn)制文件。


查看完整回答
反對(duì) 回復(fù) 2021-09-13
  • 1 回答
  • 0 關(guān)注
  • 254 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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