日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
快速掌握go在linux中加載so的方法(golinux加載so)

快速掌握Go在Linux中加載SO的方法

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供平橋網(wǎng)站建設(shè)、平橋做網(wǎng)站、平橋網(wǎng)站設(shè)計、平橋網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、平橋企業(yè)網(wǎng)站模板建站服務(wù),十余年平橋做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

Go 語言是一門現(xiàn)代化的編程語言,因為它的出現(xiàn),讓很多程序員感到不再需要過多關(guān)注內(nèi)存分配和回收等資源管理問題,而可以更加專注于業(yè)務(wù)邏輯的實現(xiàn)。

在 Go 中實現(xiàn)動態(tài)鏈接庫加載和使用,一般就是通過使用 C 運行時來復(fù)用 C 語言中的處理方式。動態(tài)鏈接庫在外部編寫,而后鏈接進入 “Go”的應(yīng)用程序中。那么在這篇文章中我們就向大家介紹一下如何在 Linux 環(huán)境中快速掌握 Go 加載 SO 的方法。

之一步:創(chuàng)建 Go 項目

首先我們需要創(chuàng)建一個 Go 項目,可以使用 GoLand、VSCode 等常見的集成開發(fā)環(huán)境創(chuàng)建,或者手動創(chuàng)建 Go 項目,推薦使用 Go module。

手動創(chuàng)建的方式如下:

“`bash

mkdir demo

cd demo

go mod init demo

“`

第二步:創(chuàng)建動態(tài)鏈接庫

我們先來創(chuàng)建一個簡單的動態(tài)鏈接庫,在 $GOPATH 目錄下創(chuàng)建一個名為 demo/solib 的文件夾,并在該文件夾中編寫示例代碼:

“`go

package mn

import “C”

//export Add

func Add(a, b int) int {

return a + b

}

func mn() {}

“`

其中 “//export” 是一個特殊的注釋,指定了在 C 代碼中可被調(diào)用的函數(shù),Add 就是被動態(tài)鏈接庫中 C 代碼使用的函數(shù)。

現(xiàn)在我們需要編譯一下這個 Go 代碼,命令如下:

“`bash

go build -buildmode=c-shared -o libsodemo.so solib.go

“`

用上述命令來生成我們所需要的動態(tài)鏈接庫,此操作完成之后,我們就可以得到名為 libsodemo.so 的文件。

第三步:創(chuàng)建 C 語言文件

我們使用 C 語言代碼來調(diào)用 Go 動態(tài)鏈接庫中的函數(shù),代碼如下:

“`c

#include

#include

// 定義與 Go 相對應(yīng)的 C 函數(shù)指針

typedef int (*addFunc)(int a, int b);

addFunc Add;

int mn() {

void *handle;

char *error;

handle = dlopen(“./libsodemo.so”, RTLD_NOW);

if (!handle) {

fputs(dlerror(), stderr);

return 1;

}

// 將 C 指針指向 Go 暴露引入的函數(shù)

Add = (addFunc) dlsym(handle, “Add”);

if ((error = dlerror()) != NULL) {

fputs(error, stderr);

return 1;

}

printf(“%d\n”, Add(1, 2));

dlclose(handle);

return 0;

}

“`

該代碼先通過 dlopen 函數(shù)打開指定的路徑的動態(tài)鏈接庫,然后使用 dlsym 函數(shù)獲取 Go 動態(tài)鏈接庫中的指定函數(shù)的函數(shù)指針,最后使用函數(shù)指針調(diào)用 Go 中的函數(shù)。

第四步:編譯執(zhí)行程序

接下來我們需要對上述代碼進行編譯執(zhí)行操作,命令如下:

“`bash

gcc -o ctest ctest.c -ldl

./ctest

“`

這時候就可以看到輸出值為“3”,表示 Go 中的 Add 函數(shù)已經(jīng)被成功調(diào)用。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!

go程序可以在linux上運行嗎

可以,deepin部分軟件就是用go語言寫的

可以。 Go語言是谷歌推出的一種編程語言,可以在不損失應(yīng)用程序性能的情況下降低前薯代碼的復(fù)雜性。Go語言專門針對多處理器系統(tǒng)應(yīng)用程序的編程進棚如行了優(yōu)化,使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加慧和者安全、支持并行進程

linux下怎么安裝Go開發(fā)環(huán)境

gcc要在PATH環(huán)境變量中添加路徑,不知道你添加胡做頌了沒? “./configure”表示在當前路徑下執(zhí)行可褲鄭執(zhí)行文件“configure”,至于makefile的話,你的意思是為某個項目胡衡寫的makefile不能執(zhí)行嗎?還是說就gcc源碼包里的makefile無法執(zhí)行,沒搞懂你問的是什么

go linux 加載so的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于go linux 加載so,快速掌握go在linux中加載so的方法,go程序可以在linux上運行嗎,linux下怎么安裝Go開發(fā)環(huán)境的信息別忘了在本站進行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡稱香港主機/香港空間。香港虛擬主機特點是免備案空間開通就用, 創(chuàng)新互聯(lián)香港主機精選cn2+bgp線路訪問快、穩(wěn)定!


當前標題:快速掌握go在linux中加載so的方法(golinux加載so)
標題鏈接:http://www.dlmjj.cn/article/ccedeio.html