awslabs / awslabs/aws-lambda-cpp

Aws Lambda: C++ custom runtime - /usr/bin/ld: cannot find /usr/lib64/libc_nonshared.a

Abierto
#96 2 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C++
Estrellas
465
Forks
98
Merge medio
12 h 47 min
PR fusionados (30 d)
3

Descripción

I am trying to add `g++` inside `AWS Lambda C++ custom runtime`.

Now `g++` requires `.so` (shared libraries) files as well as `.a` (static libraries).

For this, I installed g++ inside chroot directory (directory `gpp`) on the Amazon Linux machine.

Now, I created another directory that has `bin`, `usr`, `lib`, and `lib64` directories (taken from chroot directory). I created a zip of this directory, uploaded to s3 (as it is more than 50MB), and created a Lambda layer using this zip directory.

Now, after adding this `layer` in the `lambda` function, I am trying to run.
```
execl("/opt/usr/bin/g++48", "/opt/usr/bin/g++48", "-Wall", "/tmp/hello.cpp","-o", "/tmp/hello.o",
"-I/opt/gpp3/usr/include/", (char *) 0)
```

Using the above `g++` is able to find `shared libraries` as well as `header files` but it is not able to find the static library.

```
/usr/bin/ld: cannot find /usr/lib64/libc_nonshared.a
collect2: error: ld returned 1 exit status
```
`libc_nonshared.a` exists inside `/opt/gpp3/usr/lib64/` but it is searching in `/usr/lib64/`.

I tried providing full path in g++ command as `-L/opt/gpp3/usr/lib64/libc_nonshared.a` and
`-L/opt/gpp3/usr/lib64/libc_nonshared` and `-L/opt/gpp3/usr/lib64/`

But none of them works. Any help is deeply appreciated.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.