首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有加载libssl.so.1.0.0的文件或目录。

没有加载libssl.so.1.0.0的文件或目录。
EN

Stack Overflow用户
提问于 2018-08-24 10:01:45
回答 3查看 2K关注 0票数 1

我正试着用AWS做我的第一次尝试

我的代码很简单:

代码语言:javascript
复制
package main

import (
    "bufio"
    "context"
    "fmt"
    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
    "github.com/confluentinc/confluent-kafka-go/kafka"
    "github.com/droundy/goopt"
    "os"
    "path/filepath"
)

func badUsage() {
    fmt.Println(goopt.Usage())
    os.Exit(1)
}

func HandleRequest(ctx context.Context, s3Event events.S3Event) {
    for _, record := range s3Event.Records {
        s3 := record.S3
        fmt.Printf("[%s - %s] Bucket = %s, Key = %s \n", record.EventSource, record.EventTime, s3.Bucket.Name, s3.Object.Key)
    }
}

func main() {
    lambda.Start(HandleRequest)
}

注1:我有一些函数使用kafka生成kafka中的一些消息。

我在我自己的电脑上编译它:

代码语言:javascript
复制
GOOS=linux GOARCH=amd64 go build -tags static -o goklog producer.go

但我总有一些问题,比如(在云端):

代码语言:javascript
复制
error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory

编辑2:我认为static_all是不稳定的。我试过了,我有:

代码语言:javascript
复制
➜  goklog git:(master) ✗ GOOS=linux GOARCH=amd64 go build -tags static_all
# github.com/confluentinc/confluent-kafka-go/kafka
/usr/lib/librdkafka.a(rddl.o): In function `rd_dl_open0':
/home/maathor/dev/librdkafka/src/rddl.c:80: warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/librdkafka.a(rdaddr.o): In function `rd_getaddrinfo':
/home/maathor/dev/librdkafka/src/rdaddr.c:168: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
# github.com/confluentinc/confluent-kafka-go/kafka
cannot load imported symbols from ELF file $WORK/github.com/confluentinc/confluent-kafka-go/kafka/_obj/_cgo_.o: no symbol section
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-28 07:23:35

RC是AWS,它只支持glibc运行时动态链接,但是librdkafka有sasl2、openssl、zlib、zstd动态依赖项。甚至您也使用go build -tags static -o goklog producer.go来确保librdkafka是静态链接到二进制文件中的,上面的4个依赖项需要动态链接。

解决方案: 1.使用./configure --install-deps --source-deps-only --prefix=/usr && make && make install编译图书库

  1. 编译静态图书库以生成libssl.a和libzstd.a ./configure --enable-static --install-deps --source-deps-only --prefix=/usr && make
  2. 编译zlib和cyrus-sasl以生成libz.a和libsasl2.a
代码语言:javascript
复制
// zlib path
CFLAGS="-O3 -fPIC" ./configure --libdir=/usr/lib --sharedlibdir=/usr/lib
make
make install
// cyrus-sasl
./configure --enable-static --libdir=/usr/lib
  1. 设置LD路径和PKG路径
代码语言:javascript
复制
export PKG_CONFIG_PATH=($pwd)/lib/pkgconfig 
export LD_LIBRARY_PATH=($pwd)/lib
  1. 将所有.a文件复制到lib文件夹中
代码语言:javascript
复制
cp librdkafka_folder/mklove/deps/dest/libcrypto/usr/lib64/*.a ($pwd)/lib/
cp librdkafka_folder/mklove/deps/dest/libzstd/usr/lib64/*.a ($pwd)/lib/
cp /usr/lib/pkgconfig/rdkafka* ($pwd)/lib/pkgconfig/
cp /usr/lib/librdkafka* ($pwd)/lib/
cp /usr/lib/libz.a ($pwd)/lib/
cp /usr/lib/libsasl2.a ($pwd)/lib/
  1. 去建造
代码语言:javascript
复制
go build -tags static -ldflags "-extldflags '-Lz -Lssl -Lsasl2 -Lzstd'" -o test
  1. ldd检查动态链路
代码语言:javascript
复制
ldd test
// sample output
linux-vdso.so.1 =>  (0x00007ffea7ee0000)
libm.so.6 => /lib64/libm.so.6 (0x00007f772c287000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f772c083000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f772be67000)
librt.so.1 => /lib64/librt.so.1 (0x00007f772bc5f000)
libc.so.6 => /lib64/libc.so.6 (0x00007f772b892000)
/lib64/ld-linux-x86-64.so.2 (0x00007f772c589000)
票数 0
EN

Stack Overflow用户

发布于 2018-08-24 10:13:31

这是因为您使用了"github.com/confluentinc/confluent-kafka-go/kafka“包。这一项需要拉夫卡 C库,假定您的机器上有某些库(如libssl库)(参见链接中的页面,在“Requirements”下)。

票数 2
EN

Stack Overflow用户

发布于 2018-08-24 14:26:27

我建议将您的lambda包构建在一个类似lambda的码头映像上,比如https://github.com/lambci/docker-lambda

这样,您所构建的librdkafka将依赖于lambda目标主机上可用的相同的库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52002045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档