apache / pulsar-client-go

Apache Pulsar Go Client Library
https://pulsar.apache.org/
Apache License 2.0
653 stars 335 forks source link

Error of clang-14: error: linker command failed with exit code 1 (use -v to see invocation) in macOS #998

Open elsagong opened 1 year ago

elsagong commented 1 year ago

I tried to run a demo of [pulsar-client-go](https://github.com/apache/pulsar-client-go) on macOS, but I always get the error of # github.com/99designs/go-keychain ld: framework not found CoreFoundation clang-14: error: linker command failed with exit code 1 (use -v to see invocation),

after I export CGO_CFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" on console, I got error as below `# runtime/cgo

the code can run successfully in Linux, Does pulsar-client-go not work on MacOS? Xcode 14.2 macOS 12.6.6

Thanks so much for any feedback.

jacky68147527 commented 1 year ago

I have the same problem. go version go1.17.3 darwin/amd64 github.com/apache/pulsar-client-go v0.10.0

/usr/local/go/pkg/tool/darwin_amd64/link: running clang failed: exit status 1 duplicate symbol '_CFDictionaryCreateSafe2' in: /var/folders/jw/738hqc1x41n0dgcx9c2837500000gn/T/go-link-571816323/000019.o /var/folders/jw/738hqc1x41n0dgcx9c2837500000gn/T/go-link-571816323/000072.o duplicate symbol '_CFArrayCreateSafe2' in: /var/folders/jw/738hqc1x41n0dgcx9c2837500000gn/T/go-link-571816323/000019.o /var/folders/jw/738hqc1x41n0dgcx9c2837500000gn/T/go-link-571816323/000072.o ld: 2 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

tisonkun commented 1 year ago

Which demo did you run? Can you provide the details of reproduce steps?

elsagong commented 1 year ago

Hi, I pasted demo as below, please check @tisonkun

package main

import (
    "fmt"
    "log"
    "time"

    "github.com/apache/pulsar/pulsar-client-go/pulsar"
)

func main() {
    // Pulsar服务的URL
    pulsarURL := "pulsar://localhost:6650"

    // 创建Pulsar客户端
    client, err := pulsar.NewClient(pulsar.ClientOptions{
        URL: pulsarURL,
    })
    if err != nil {
        log.Fatal(err)
    }

    defer client.Close()

    // 创建Pulsar生产者
    producer, err := client.CreateProducer(pulsar.ProducerOptions{
        Topic: "my-topic",
    })
    if err != nil {
        log.Fatal(err)
    }

    defer producer.Close()

    // 发布消息
    msg := &pulsar.ProducerMessage{
        Payload: []byte("Hello, Pulsar!"),
    }

    _, err = producer.Send(msg)
    if err != nil {
        log.Fatal(err)
    }

    // 创建Pulsar消费者
    consumer, err := client.Subscribe(pulsar.ConsumerOptions{
        Topic:            "my-topic",
        SubscriptionName: "my-subscription",
        Type:             pulsar.Exclusive,
    })
    if err != nil {
        log.Fatal(err)
    }

    defer consumer.Close()

    // 接收和处理消息
    for {
        msg, err := consumer.Receive()
        if err != nil {
            log.Fatal(err)
        }

        fmt.Printf("Received message: %s\n", string(msg.Payload()))

        consumer.Ack(msg)
    }

    // 停止Pulsar消费者
    consumer.Close()
}
elsagong commented 1 year ago

@tisonkun And after I export CGO_CFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" on console, I got error as below # runtime/cgo ld: library not found for -lpthread clang-14: error: linker command failed with exit code 1 (use -v to see invocation)