Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memautkan Kod External Go secara Dinamik kepada Perduaan Go Sedia Ada?

Bagaimanakah Saya Boleh Memautkan Kod External Go secara Dinamik kepada Perduaan Go Sedia Ada?

Barbara Streisand
Lepaskan: 2024-12-13 19:17:11
asal
294 orang telah melayarinya

How Can I Dynamically Link External Go Code to an Existing Go Binary?

Membina dan Menghubungkan Secara Dinamik daripada Go Binary

Pertimbangkan situasi di mana anda mempunyai binari Go sedia ada dan perlu memasukkan kod luaran ke dalamnya secara dinamik. Ini boleh dicapai dengan menyusun fail Go luaran dan memautkannya ke binari sedia ada.

Menyusun Fail Go Luaran

Once Go 1.5 dikeluarkan pada Ogos 2015, sokongan untuk perpustakaan kongsi akan diperkenalkan. Menggunakan bendera -buildmode=shared, anda boleh membina fail Go luaran sebagai pustaka kongsi:

go install -buildmode=shared external.go
Salin selepas log masuk

Memautkan Kod Disusun

Untuk memautkan pustaka kongsi yang disusun ke binari sedia ada, gunakan bendera -linkshared semasa proses binaan:

go build -linkshared main.go
Salin selepas log masuk

Contoh Penggunaan

Dalam contoh yang diberikan, binari utama akan mengandungi kod berikut:

func main() {
    // Compile external package containing runFoo()
    pkg, err := build.Import("github.com/example/external", "", build.ImportModeShared)
    if err != nil {
        // Handle error
    }

    // Get runFoo function from compiled package
    runFoo := reflect.ValueOf(pkg.Func("runFoo"))

    // Call the compiled runFoo function
    runFoo.Call(nil)

    // Continue execution normally
}
Salin selepas log masuk

Pendekatan ini membolehkan anda menggabungkan fungsi baharu secara dinamik ke dalam binari Go sedia ada tanpa membina semula keseluruhan program.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memautkan Kod External Go secara Dinamik kepada Perduaan Go Sedia Ada?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan